有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java修改对象会更改Ehcache值

    @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;
}

共 (1) 个答案

  1. # 1 楼答案

    在Ehcache中的堆层上使用时,键和值是通过引用进行的。因此,对对象的任何修改都将反映在缓存中