Wie man entity-manager oder die Transaktion in jpa-listener
War ich mit Hibernate-Ereignis-listener wie PostDeleteEventListener, PostInsertEventListener, PostUpdateEventListener
zu tun, einige Operationen bei insert, delete und update. Jetzt möchte ich nutzen, JPA listener zu tun, weil wenn ich wie der übergang vom Ruhezustand zu anderen JPA-provider meine Zuhörer, sollte funktionieren. Hibernate listener gibt mir event
von der aus ich kann mit der Transaktion, und überprüfen Sie, ob Ihr commit oder rollback. JPA Zuhörer nur bietet mir das entity-Objekt. Nun, wie kann ich die Transaktion oder session-oder entity-Manager in der JPA-listener?? Vielen Dank im Voraus!! Ich bin mit Jboss als mein CMT.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist nicht unterstützt von JPA 2.0.
In JPA 2.1 (geplant in Java EE 7), die Persistenz-provider behandeln entity-Listener als CDI-beans, wenn Sie in einer verwalteten Umgebung (wie die JBoss-app-server). Aus der Vorgeschlagenen Endgültigen Entwurf des JPA 2.1 spec, Seite 96:
So, in JPA 2.1, wenn Sie eine CDI-Hersteller bietet EntityManager (einfach durch die Anmerkungen @PersistenceContext-Feld mit @Produziert), Sie kann nur @Inject der EntityManager in den Hörer.
In der Zwischenzeit, ich bin mir nicht bewusst, alle sauber oder angenehm Abhilfe. Die "am wenigsten Schlimmste" was ich mir vorstellen kann wäre die Konfiguration der EntityManager gebunden zu sein, JNDI, dann erhalten Sie es durch einen JNDI-lookup innerhalb der Zuhörer.
In meinem Fall bin ich mit diesem code:
Dies funktioniert gut für mich.
Den code dieser Anwendung ist verfügbar zum download auf https://bitbucket.org/macielbombonato/apolo
Ich hoffe, dass diese Ihnen helfen können.
Können Sie alle pre/post-laden -, insert -, update-oder delete-Hörer in JPA durch die Verwendung von zwei Arten:
Durch die Verwendung von Annotationen.
Ein einfaches Beispiel für die Verwendung eines Listener werden könnte, wenn ein Unternehmen hat eine transiente variable, die muss aufgefüllt werden, nachdem die Person wurde beibehalten, aktualisiert oder geladen, wie:
Die entity-Klasse, würde kommentiert mit @EntityListeners:
Mithilfe persistence.xml Konfigurations-Datei.
Schließlich, anstelle von Annotationen, XMl-mapping-Datei verwendet werden können und die mit der Anwendung bereitgestellt, um Sie Standardeinstellungen für die Zuhörer. (Diese mapping-Datei wird durch den persistence.xml Datei.) Aber ein Unternehmen kann die @ExcludeDefaultListeners Anmerkung wenn Sie nicht möchten, verwenden Sie den Standard-Hörer.
In Ihrem persistence.xml: