首页 文章

Cacheput注释不更新缓存Hazelcast缓存

提问于
浏览
0

我正在Spring Boot中开发一个java应用程序 . 我使用Hazelcast进行缓存,但是当使用@CachePut注释方法时它不会更新缓存我的代码如下所示:

@CachePut(cacheNames = "cachetest")
public void addData(com.nikesh.webapp.model.CacheTest cacheObj) {
    repo.save(cacheObj);
}

@Cacheable(cacheNames = "cachetest")
public List<com.nikesh.webapp.model.CacheTest> getCacheTestData() {
    return repo.findAll();
}

@SuppressWarnings("unchecked")
@Cacheable(cacheNames = "cachetest")
public List<com.nikesh.webapp.model.CacheTest> getCacheTestDataByPhone(
        String phone) {
    Query q = manager.createNamedQuery("byPhone");
    q.setParameter("phone", phone);
    return q.getResultList();
}

@CacheEvict(cacheNames = "cachetest")
public boolean clearCache() {
    return true;
}

CacheEvict工作正常 . 我错过了什么吗?

1 回答

  • 0

    您没有在注释中指定缓存键 .

    你可以试试以下:

    @CachePut(cacheNames = "cachetest", key="#p0.phone")
    public CacheTest addData(com.nikesh.webapp.model.CacheTest cacheObj) {
        return repo.save(cacheObj);
    }
    
    @Cacheable(cacheNames = "cachetest", key="'phone'")
    public List<com.nikesh.webapp.model.CacheTest> getCacheTestData() {
        return repo.findAll();
    }
    
    @SuppressWarnings("unchecked")
    @Cacheable(cacheNames = "cachetest", key="#p0")
    public List<com.nikesh.webapp.model.CacheTest> getCacheTestDataByPhone(
            String phone) {
        Query q = manager.createNamedQuery("byPhone");
        q.setParameter("phone", phone);
        return q.getResultList();
    }
    
    @CacheEvict(cacheNames = "cachetest")
    public boolean clearCache() {
        return true;
    }
    

相关问题