Ich versuche, meine Hibernate-Anwendung so einzurichten, dass jedes Mal, wenn eine Notification
-Entity erstellt wird, eine neue Activity
-Einheit erhalten bleibt - im Moment läuft alles, was ich probiert habe, nicht still Protokolle aber SQL wird nie ausgeführt).
Kann jemand bestätigen, dass es sogar möglich ist, zusätzliche Entitäten in den Hibernate pre / postPersist-Listenern zu erhalten?
Ich habe in der Dokumentation gelesen:
Eine Callback-Methode darf keine EntityManager- oder Abfrage-Methoden aufrufen!
Aber ich habe mehrere andere Diskussionsthreads gelesen, die darauf hindeuten, dass dies möglich ist.
Als Referenz sind die beiden Ansätze, die ich versucht habe:
Notification
method - legt eine cascade.ALL-Beziehung zwischen @PrePersist
und Activity
fest und erstellt in der PrePersist-Methode einfach ein neues Notification
und verknüpft es mit dem Notification
, das in a erstellt wird hoffe, dass der Activity
beibehalten wird.
Notification
Methode - Verwenden von @PostPersist
und einer ListenerClass, Verdrahtung in einem Service und Erstellen einer neuen @Configurable
-Entität und dann expliziten Aufruf des EntityManger persistent
Kann jemand bestätigen, was ich versuche, ist möglich?
Warum müssen Sie Notification
in @PrePersist
oder @PostPersist
function beibehalten? Der folgende Code sollte beide Entitäten beibehalten:
UPDATE : Sie können versuchen, den Link im Konstruktor der Aktivität wie folgt zu erstellen:
%Vor% Beachten Sie, dass Sie @PostPersist
nicht verwenden können. Um genauer zu sein, müssen Sie Notification
mit Activity
verknüpfen, bevor Sie Activity
beibehalten, damit cascade={CascadeType.PERSIST}
funktioniert.
Sie können zusätzliche Entitäten in Hibernate-Ereignis-Listenern (Einfügen, Aktualisieren, Flush usw.) mit dem StatelessSession -Schnittstelle. Aber ich weiß nicht, ob dies auch mit strengem JPA-Code ( EntityManagerFactory
und EntityManager
) möglich ist.