eclipselink query-results-cache不起作用

时间:2016-10-26 12:30:58

标签: jpa caching eclipselink

我有一个带有命名查询的实体。

@Entity(name = "MyEntity")
@Table(name = "mytable") 
//@ReadOnly
@NamedQueries({
@NamedQuery(
        name = "exampleFind", 
        query = "[..]", 
hints = {@QueryHint(name= QueryHints.QUERY_RESULTS_CACHE, value= "TRUE")})
})
@Cacheable
@Cache(type = CacheType.FULL)
public class MyEntity {

当我用@ReadOnly注释这个类时,这个查询没有命中数据库(仅使用结果缓存)但是当我删除@ReadOnly注释时,它总是在数据库上执行SQL。

如何在没有@ReadOnly的情况下启用此缓存?结果缓存有任何限制吗?

我使用EclipseLink 2.4.1

1 个答案:

答案 0 :(得分:0)

在我们的应用程序中,我们在查询缓存也能正常运行时遇到了一些麻烦。您需要确保缓存实体和查询结果。

对我们来说,当我们将persistence.xml中的共享缓存模式设置为DISABLE_SELECTIVE时,它可以正常工作:

 <shared-cache-mode>DISABLE_SELECTIVE</shared-cache-mode>

与此同时,我们使用@Cache来配置我们想要的实体缓存类型。并@Cacheable(false)为某些人禁用它。

根据developers manual此设置实际上是默认设置,因此删除当前设置也应该有效。