sql >> Database >  >> RDS >> Oracle

Naad @Transactional annotatie werkt niet?

Ik ben niet bekend met hoe Seam werkt, dus bij voorbaat mijn excuses als dit antwoord niet van toepassing is.

Ik heb gemerkt dat de methode @Transactional is protected . Dit houdt voor mij in dat het wordt aangeroepen door een andere interne methode.

Met Spring's AOP markeert u de openbare methoden met @Transactional die zijn verpakt en vervangen door een transactieproxy. Wanneer een externe klas de public . aanroept methode, roept het de proxy aan die de transactie vormt. Als de externe klas een andere public . aanroept methode die niet . is gemarkeerd met @Transactional die vervolgens een interne methode aanroept, dat wil zeggen dat er geen transactie wordt gemaakt omdat de proxy helemaal niet wordt aangeroepen.

In het voorjaar, zelfs als u uw doWork() . wijzigt methode om openbaar te zijn, zou hetzelfde probleem optreden. Geen transactie omdat het proxy-object niet wordt aangeroepen. Method-aanroepen die binnen de klasse worden gedaan, doen geen aanroepen naar het proxy-object.

Een snelle lezing van wat documentatie lijkt erop te wijzen dat Seam, net als Spring AOP, CGLib-proxy gebruikt . De vraag is of het in staat is om alle methoden te proxyen -- zelfs als ze worden aangeroepen vanuit het proxy-object. Sorry voor het verspillen van uw tijd als dit antwoord niet van toepassing is.




  1. EXPORTEREN ALS INSERT-VERKLARINGEN:Maar in SQL Plus overschrijft de regel 2500 tekens!

  2. Hoe maak ik verbinding met een MSSQL-database met behulp van Perl's DBI-module in Windows?

  3. Nummer converteren naar datum in orakel

  4. Draaien van meerdere kolommen in T-SQL