2014-10-07 131 views
1
@Override 
    @Cacheable(value = "user-cache", key = "#login", unless = "#result == null") 
    public User findUserByLogin(final String login) 
    { 
     return em.find(User.class, login); 
    } 

如果我將密碼設置爲null,例如下圖所示。我看到的緩存值也會相應地進行修改,因爲在下次調用時,緩存會被命中並且其中的密碼將設置爲NULL。這是正確的行爲嗎?如果我想修改該對象,是否需要在每次檢索後創建一個新對象。我正在討論修改數據庫中未更改的內容,而是在服務級別上進行修改。修改對象更改Ehcache值

public User getUserByLogin(final String login) 
{ 
    final User user = userRepository.findUserByLogin(login); 
    user.setPassword(null); 
    return user; 
} 

回答

1

在Ehcache中使用堆堆層時,鍵和值是引用。所以對對象的任何修改都會反映在緩存中。

+0

我明白了。我如何更改爲堆外...感謝您的信息。 – 2014-10-08 14:34:32