OpenJPA和二级缓存(Ehcache)

时间:2015-03-18 08:20:43

标签: java jpa ehcache openjpa

我想在我的项目中为JPA添加二级缓存 我添加 ehcache-core (net.sf.ehcache),添加 ehcache-openjpa-0.2.0.jar 。 我有一个实体:

@Entity
public class People{
 @Id
 private int ID;

 private String NAME;
...setter and getter...
}

在我的dao课程中,我有一个方法:

public List<People> getAllCountry(){
 Query query = getEntityManager().createQuery("SELECT p FROM People p");
 return query.getResultList();
}

我添加了ehcache.xml:

<ehcache> 
    <defaultCache 
          maxElementsInMemory="1000" 
          eternal="false" 
          timeToIdleSeconds="300" 
          timeToLiveSeconds="600" 
          overflowToDisk="false" 
          memoryStoreEvictionPolicy="LRU" 
          /> 

    <!-- OpenJPA data cache --> 
    <cache name="openjpa" 
                 maxElementsInMemory="5000" 
                 eternal="false" 
                 timeToIdleSeconds="300" 
                 timeToLiveSeconds="600" 
                 overflowToDisk="false" 
                 memoryStoreEvictionPolicy="LRU" 
          /> 

    <!-- OpenJPA query cache --> 
    <cache name="openjpa-querycache" 
           maxElementsInMemory="1000" 
           eternal="false" 
           timeToIdleSeconds="300" 
           timeToLiveSeconds="600" 
           overflowToDisk="false" 
           memoryStoreEvictionPolicy="LRU" 
          /> 
</ehcache> 
在persistance.xml中的

我添加:

<property name="openjpa.QueryCache" value="ehcache"/> 
<property name="openjpa.DataCacheManager" value="ehcache"/> 

然后我运行查询,然后收到消息:

  

查询&#34; ..&#34;从永久排除的缓存中删除。 Quer&#34; ..&#34;未缓存,因为它的结果不是通过执行select语句获得的。如果在内存中评估查询,则会发生这种情况。结果由org.apache.openjpa.datacache.QueryCacheStoreQuery $ CachingResultObjectProvider提供。

如何解决此问题?

0 个答案:

没有答案