Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да изпълнявам собствени SQL заявки в същата транзакция на Hibernate?

В случай, че не използвате транзакции, управлявани от контейнер след това трябва да добавите и политиката за транзакции:

@Stateful
@TransactionManagement(value=TransactionManagementType.CONTAINER)
@TransactionAttribute(value=REQUIRED)

Виждал съм това явление само в две ситуации:

  • DataSource работи в режим на автоматично записване, следователно всеки израз се изпълнява в отделна транзакция
  • EntityManager не е конфигуриран с @Transactional , но тогава могат да се изпълняват само заявки, тъй като всяка DML операция в крайна сметка ще доведе до изключение, изискващо транзакция.

Нека обобщим, че сте задали следните свойства на хибернация:

hibernate.current_session_context_class=JTA
transaction.factory_class=org.hibernate.transaction.JTATransactionFactory
jta.UserTransaction=java:comp/UserTransaction

Където крайното свойство трябва да бъде зададено с вашия Application Server UserTransaction JNDI ключ за именуване.

Можете също да използвате:

hibernate.transaction.manager_lookup_class=org.hibernate.transaction.JBossTransactionManagerLookup

или някаква друга стратегия според текущия ви сървър за приложения Java EE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Съхранявайте името на функцията в базата данни и след това я изпълнете

  2. VARCHAR срещу TEXT в MySQL

  3. python и mysql на mac os x

  4. Числова стойност извън диапазона:1264 в mysql

  5. Автоматично връщане назад, ако COMMIT TRANSACTION не бъде достигната