Hibernate+Spring中的Cache is not alive异常
Bean中如下:
private Integer id;
private Integer uid;
private User fri;
applicationContest.xml中有如下配置:
<prop key="cache.provider_class">
org.hibernate.cache.EhCacheProvider
</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
<prop key="hibernate.connection.release_mode">auto</prop>
XML配置:
<hibernate-mapping>
<class name="com.base.vo.Fri" table="tb_Fri" schema="dbo" catalog="test">
<cache usage="read-write"></cache>
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="native" />
</id>
<property name="uid" type="java.lang.Integer">
<column name="uid" />
</property>
<many-to-one name="fri" class="com.test.vo.User" fetch="select">
<column name="friend_id" />
</many-to-one>
</class>
</hibernate-mapping>
查询方法:
public List getFri(int id){
Session session = this.getSession();
String hql="from Fri where uid=?";
Query query = session.createQuery(hql);
query.setInteger(0, id);
List list = query.list();
return list;
}
如下代码招聘异常:
List<Fri> list = user.getFri(1006);
for(Fri fri:list){
System.out.println(fri.getFri().getName());
}
List<Fri> list2 = user.getFri(1006);//第二次从缓存中查询
for(Fri fri:list){
System.out.println(fri.getFri().getName());
}
第一次可正确查询出结果
List<Fri> list2 = user.getFri(1006);//第二次从缓存中查询 到这就抛出异常如下:
Exception in thread "main" java.lang.IllegalStateException: The org.hibernate.cache.StandardQueryCache Cache is not alive.
at net.sf.ehcache.Cache.checkStatus(Cache.java:713)
at net.sf.ehcache.Cache.get(Cache.java:355)
at org.hibernate.cache.EhCache.get(EhCache.java:110)
at org.hibernate.cache.StandardQueryCache.get(StandardQueryCache.java:76)
at org.hibernate.loader.Loader.list(Loader.java:1549)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at com.base.hibernate.impl.UserDaoImpl.getFri(UserDaoImpl.java:135)
at com.base.test.testdemo.userDemo.main(userDemo.java:212)
请问如何解决!!!