升级Hibernate 3.6.7到4.0.1,嵌套事务。

3
我正在尝试升级从hibernate 3.6.7到4.0.1,并从JDK 1.6升级到JDK 1.7。迁移配置文件等等...之后,我可以正常运行我的应用程序。
首先是我的hibernate cfg.xml的一部分:
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory< /property>
<property name="current_session_context_class">thread</property>

但是我遇到了一个问题,涉及嵌套的sessionFactory.getCurrentSession().beginTransaction()。这在hibernate 3.6.7中可以正常工作,但没有"hibernate.transaction.factory_class"属性。
有人知道我哪里做错了吗?
堆栈跟踪如下:
org.hibernate.TransactionException: nested transactions not supported
at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:152)
at org.hibernate.internal.SessionImpl.beginTransaction(SessionImpl.java:1263)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:350)
at $Proxy4.beginTransaction(Unknown Source)
1个回答

2
阅读文档后,看起来Hibernate从未支持嵌套事务,并且自Hibernate 4以来强制执行此限制,因为在此之前不存在AbstractTransactionImpl类。我不知道您尝试使用嵌套事务解决什么问题,但也许有一种替代方法,只使用单个事务即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接