3

我正在尝试从休眠 3.6.7 升级到 4.0.1,并从 JDK 1.6 升级到 JDK 1.7。

迁移配置文件等后...我可以正常运行我的应用程序。

首先是我休眠的 cfg.xml:

<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory< /property>
<property name="current_session_context_class">thread</property>

但是我面临 1 嵌套 sessionFactory.getCurrentSession().beginTransaction() 的问题这曾经在休眠 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)
4

1 回答 1

2

阅读文档,Hibernate 似乎从不支持嵌套事务,并且这是在 Hibernate 4 中强制执行的,因为该类 AbstractTransactionImpl 以前不存在。

我不知道您要使用嵌套事务解决什么问题,但也许有另一种方法可以做到这一点,只使用一个。

于 2012-01-16T21:13:37.133 回答