2014-09-22 66 views
2

我想知道是否有一种方法可以使用SpEL来过滤掉像空集合这样的值。Spring cacheable - 使用SpEL过滤掉空集合

我的缓存目前筛选出空值:

@Cacheable(value = "groupIdToGroupNames",unless = "#result == null") 
    public Map<Long, Collection<String>> findAllBySearchCustomerKey(final long groupId) { 
    return idToNameClient.findAllGroupMembersById(groupId); 
    } 

我试图找到一种方法来过滤掉所有大小为0,但不是空的组。 有没有办法通过@Cacheable使用params?

任何帮助将不胜感激。

回答

11

像这样的事情

unless = "#result != null and #result.size() == 0" 

+0

我刚加了它。 Newbe到SpEL :)谢谢! – user2512231 2014-09-22 15:43:35

0

只是为了展示一个例子(Artem Bilan的答案是有效的)。我的函数可以返回Optional.ofEmpty或者我的对象的可选项

@Cacheable(value = "myCache", unless = "#result == null", key = "@myDao.cacheKey(#id, #languageCode)") 
public Optional<MyDTO> getMyStuff(int id, String languageCode) { 
... }