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

Анотацията на Seam @Transactional не работи?

Не съм запознат с това как работи Seam, така че се извинявам предварително, ако този отговор не е приложим.

Забелязах, че методът, който е @Transactional е protected . Това за мен означава, че се извиква от друг вътрешен метод.

С AOP на Spring маркирате обществеността методи с @Transactional които са обвити и заменени с прокси за транзакция. Когато външен клас извика public метод, той извиква проксито, което формира транзакцията. Ако външният клас извика друг public метод, който не е маркирани с @Transactional който след това извиква вътрешен метод, което означава, че няма да има създадена транзакция, защото проксито изобщо не се извиква.

През пролетта, дори ако промените своя doWork() методът да бъде публичен, ще се случи същият проблем. Няма транзакция, защото прокси обектът не се извиква. Извикванията на метод, направени вътре в класа, не извършват извиквания към прокси обекта.

Бърз прочит на част от документацията изглежда показва, че подобно на Spring AOP, Seam използва CGLib проксииране . Въпросът е дали може да проксира всички методи -- дори ако те се извикват от проксиирания обект. Съжалявам, че ви губя времето, ако този отговор не е приложим.




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

  2. Как мога да инстанцирам профилиран DataAdapter, който да използвам с MVC MINI PROFILER?

  3. Въведете голямо съдържание в базата данни на Oracle

  4. Как да затворя принудително връзка от група връзки, когато затварянето отнема твърде много време?

  5. това е грешка ORA-12154:TNS:не може да разреши посочения идентификатор за свързване?