我想在我的项目中为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提供。
如何解决此问题?