Я переключился с Hibernate 4.2 на Hibernate 4.3, и мой проект больше не работает. Я получаюКак использовать Atomicos Transaction Essentials с Hibernate> = 4.3
HibernateException: Не удалось найти текущую транзакцию JTA
, когда я делаю
Session s = sessionFactory.getCurrentSession();
Я понял, что org.hibernate.transaction.TransactionManagerLookup не существует больше. Он был удален в Hibernate 4.3. Как мне изменить текущую конфигурацию?
<hibernate-configuration>
<session-factory>
<property name="connection.datasource">testDS</property>
<property name="current_session_context_class">jta</property>
<property name="transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup</property>
<property name="transaction.factory_class">org.hibernate.transaction.CMTTransactionFactory</property>
<property name="connection.release_mode">auto</property>
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="hibernate.hbm2ddl.auto">create-drop</property>
<property name="hibernate.show_sql">true</property>
<mapping class="test.entities.Person" />
<mapping class="test.entities.CreditCard" />
<mapping class="test.entities.ExampleRevEntity" />
</session-factory>
Великий ответ! Я боролся с этим полтора дня.Знаете ли вы, есть ли способ весной использовать ранее определенные транзакторы transactionManager и userTransaction вместо создания нового здесь? – Eric
Привет Эрик, проблема в том, что Hibernate создаст новый экземпляр платформы JTA при запуске. Невозможно внедрить Spring JTA-платформу с созданным Spring менеджером транзакций в Hibernate (AFAIK). Вы можете сделать ссылку на транзакцию пользователя и статичный менеджер транзакций на платформе JTA. Затем создайте все это в контексте Spring, прежде чем Hibernate начнет использовать платформу JTA. – sebplorenz
я получил вокруг проблемы инъекции весной, создав класс, который реализует интерфейс ApplicationContextAware предоставить appCtx и изменить класс AtomikosJtaPlatform для извлечения UserTransaction из контекста яровой каждый раз: @Override \t защищен TransactionManager locateTransactionManager() { \t \t return SpringContext.getApplicationContext(). getBean ("atomikosTransactionManager", UserTransactionManager.class); \t} – stringy05