2014-09-22 36 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) { 
... }