我正在尝试从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)
答案 0 :(得分:2)
阅读文档它看起来像Hibernate从不支持嵌套事务,并且这是在Hibernate 4中强制执行的,因为之前不存在AbstractTransactionImpl类。
我不知道你试图通过嵌套事务解决什么问题,但也许还有另一种方法,只使用一个。