Обновление Hibernate 3.6.7 до 4.0.1, вложенные транзакции

Я пытаюсь перейти с спящего режима 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)

person Phoenix the II    schedule 13.01.2012    source источник


Ответы (1)


Читая документацию, похоже, что Hibernate никогда не поддерживал вложенные транзакции, и что это было применено в Hibernate 4, поскольку этого класса AbstractTransactionImpl раньше не существовало.

Я не знаю, что вы пытаетесь решить с помощью вложенных транзакций, но, возможно, есть альтернативный способ сделать это, используя только один.

person Luciano    schedule 16.01.2012