Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在hibernate中未从二级缓存中拾取对象?_Hibernate - Fatal编程技术网

在hibernate中未从二级缓存中拾取对象?

在hibernate中未从二级缓存中拾取对象?,hibernate,Hibernate,我在cfg文件中指定了以下属性 <property name="hibernate.cache.use_second_level_cache">true</property> <property name="hibernate.cache.provider_class"> net.sf.ehcache.hibernate.EhCacheProvider</property> 当T2传递上述语句时,它在后台生成下面的查询 Hibernat

我在cfg文件中指定了以下属性

<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.provider_class">
     net.sf.ehcache.hibernate.EhCacheProvider</property>
当T2传递上述语句时,它在后台生成下面的查询

Hibernate: select person0_.id as id0_1_, person0_.cname as cname0_1_ from     MyProject1.Person person0_ where person0_.id=?
我不确定为什么线程T2从数据库中读取而不是从二级缓存中获取?因为我使用的是读写用法

我的映射看起来像

<class name="com.daasl.Person"    >
<cache usage="read-write"/> 
  <id name="id" type="int">
     <generator class="increment"/>
  </id>
  <property name="name" column="cname" type="string"/>
 </class>  


解决了这个问题。实际上每个主程序都有自己的jvm实例,因此有自己的会话工厂。所以二级缓存在这里不起作用。我在同一个主程序中尝试了同样的事情,当会话在其中创建人之后关闭。然后打开新会话并尝试获取同一个人,它从二级缓存获取该人

有问题。实际上每个主程序都有自己的jvm实例,因此有自己的会话工厂。所以二级缓存在这里不起作用。我在同一个主程序中尝试了同样的事情,当会话在其中创建人之后关闭。然后打开新会话并尝试获取同一个人,它从二级缓存获取该人

您是否缓存了
个人
实体?您的实体可序列化吗?您是否正确配置了
ehcache.xml
?嗨,Tomsaz,答案在这里-您是否启用了Person实体上的缓存-正如您所看到的,person映射为。您的实体可序列化吗?-是的。您是否正确配置了ehcache.xml?-正如我在文章开头所说的,我在hibernate.cfg.xml中配置了两个属性,即hibernate.cache.use_second_level_cache和hibernate.cache.provider_类。是否还有其他需要配置的内容。您是否缓存了
Person
实体?您的实体可序列化吗?您是否正确配置了
ehcache.xml
?嗨,Tomsaz,答案在这里-您是否启用了Person实体上的缓存-正如您所看到的,person映射为。您的实体可序列化吗?-是的。您是否正确配置了ehcache.xml?-正如我在文章开头所说的,我在hibernate.cfg.xml中配置了两个属性,即hibernate.cache.use_second_level_cache和hibernate.cache.provider_类。还有什么我们需要配置的吗。
<class name="com.daasl.Person"    >
<cache usage="read-write"/> 
  <id name="id" type="int">
     <generator class="increment"/>
  </id>
  <property name="name" column="cname" type="string"/>
 </class>