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 に設定されているため、キャッシュ値もそれに応じて変更されます。これは正しい動作ですか?オブジェクトを変更したい場合、取得するたびに新しいオブジェクトを作成する必要がありますか?データベースではなくサービスレベルで変更することについて話しているのです。

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

1 に答える 1