【问题标题】:Modifying the object changes the Ehcache value修改对象会改变 Ehcache 值
【发布时间】:2014-10-07 20:48:09
【问题描述】:
    @Override
    @Cacheable(value = "user-cache", key = "#login", unless = "#result == null")
    public User findUserByLogin(final String login)
    {
        return em.find(User.class, login);
    }

如果我将密码设置为 null,例如如下所示。我看到的缓存值也被相应地修改,因为在下一次调用中缓存被命中并且那里的密码设置为 NULL。这是正确的行为吗?如果我想修改该对象,是否必须在每次检索后创建一个新对象。我说的是修改不是在数据库中更改,而是在服务级别上。

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

【问题讨论】:

    标签: java ehcache spring-cache


    【解决方案1】:

    在 Ehcache 中使用堆上层时,键和值是通过引用来实现的。所以对对象的任何修改都会反映在缓存中。

    【讨论】:

      猜你喜欢
      • 2017-05-09
      • 2021-05-08
      • 1970-01-01
      • 2015-05-05
      • 2021-09-05
      • 2021-04-02
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多