hibernate4为什么在执行save ()后直接查询直接查询不到数据
同样的配置在hibernate3这样是能查询到数据的,换到hibernate4就是查不到,
就像save()操作没有把对象缓存一样,这样是为什么呀?下面是配置
<property name="dialect">
org.hibernate.dialect.MySQL5InnoDBDialect
</property>
<property name="current_session_context_class">jta</property>
<property name="hibernate.transaction.factory_class">
org.hibernate.transaction.JTATransactionFactory
</property>
<property name="hibernate.transaction.manager_lookup_class">
com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup
</property>
<property name="connection.release_mode">auto</property>
<property name="hibernate.transaction.flush_before_completion">
true
</property>
<property name="hibernate.transaction.auto_close_session">
true
</property>
事务用的JTA
java代码时在同一个事务里添加和查询的:
User user = new User()
user.setOid("123");
...
Dao.save(user);
list lst = Dao.query("User","where oid='123'");
结果lst为空
理论上save后对象应该缓存在Session里的吧,查询的话也应该查询到缓存里对象吧,可是为什么查询不到呢?
经过验证,对象确实在session里,但是在同一个事务内就是查询不到,为什么呢?
connection.autocommit配置为true
比对下你的hibernate3和hibernate4的配置有什么区别没?
应该是save()操作后并没有立刻提交到数据库,Hibernian默认的是手动提交,所以需要设置自动提交,或者在代码中开启事务手动提交。
事务的提交吧!tx.commit;
我用的是JTA事务。现在问题出在事务内,在一个事务内save()接着查询应该能查询到才对吧!
你可以设置显示SQL语句自动提交SQL