@cacheput未更新现有缓存

Som*_*ddy 5 spring hazelcast

我正在使用Spring 4和Hazelcast 3.2。我正在尝试使用以下代码向现有缓存添加新记录。不知何故,缓存没有得到更新,同时我也没有看到任何错误。以下是供参考的代码段。

注意:-Cacheable工作正常,只有cacheput不工作。请对此轻描淡写

@SuppressWarnings("unchecked")`enter code here`
    @Transactional(readOnly = true, propagation = Propagation.REQUIRED)
    @Cacheable(value="user-role-data")
    public List<User> getUsersList() {
    // Business Logic
    List<User> users= criteriaQuery.list();

    }

@SuppressWarnings("unchecked")
    @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
    @CachePut(value = "user-role-data")
    public User addUser(User user) {
                    return user;

    } 
Run Code Online (Sandbox Code Playgroud)

小智 6

我遇到了同样的问题并设法解决了它。这个问题似乎与事务管理有关。由于事务未提交,因此在创建或更新新记录的相同方法中基本更新缓存不起作用。这是我解决它的方法。

服务层调用repo插入用户然后返回服务层在insert /update db调用之后在服务层我调用了一个刷新缓存方法它返回了用户数据并且这个方法有cacheput注释之后它工作了。

  • 您可以粘贴示例代码吗? (2认同)