Wie bekomme ich raus, welchen EntityManager ich für welches Persistenzobjekt brauche?

gorefest

Erfahrenes Mitglied
Hi,

ich habe folgendes Problem :

JBoss 5.1 mit EJB3 & JPA. Ich habe mehrere Persistenzkontexte, habe aber Prozesse, die Kontextübergreifend arbeiten sollen.

Kennt einer von Euch eine Möglichkeit, von einer Entity-Klasse den persistencemanager zu bekommen? Ich brauche das speziell für in DB-Übergreifendes Löschen von Objekten.

Danke & Grüße
gore
 

Thomas Darimont

Erfahrenes Mitglied
Hallo,

das ist ne gute Frage...
verwendest du JPA 1.0 oder 2.0?

Mit JPA 1.0 könnte man das vielleich darüber lösen, dass man über alle bekannten EntityManager iteriert und dann darauf mit contains(...) prüft ob die angegebene Entity zu diesem PersistenceContext gehört.
http://java.sun.com/javaee/5/docs/a...EntityManager.html#contains(java.lang.Object)

Bei JPA 2.0 entsprechend auch via contains:
http://java.sun.com/javaee/6/docs/a...EntityManager.html#contains(java.lang.Object)

oder übers MetaModel mit getManagedType(...) prüfen:
http://java.sun.com/javaee/6/docs/a...l/Metamodel.html#managedType(java.lang.Class)

Gruß Tom
 

Thomas Darimont

Erfahrenes Mitglied
Hallo,

was meinst du jetzt genu? Willst du jetzt alle Klassen finden die mit @Entity Annotiert (oder sonst wie gemapped sind) oder alle EntityManager deiner Anwendung?

Gruß Tom
 

gorefest

Erfahrenes Mitglied
irgendwie beides.

Ich muss einen Delete gegen alle Entities des Systems mit einer bestimmten ID absetzen. Dazu müsste ich an alle Entities kommen. Mir den Entities selbst wiederum möchte ich dann am richtigen persistence-Context das jew. Delete absetzen.

Hintergrund : Das System wächst stetig. Ich möchte nicht Entites und Definition eines Deleteprozesses nebeneinander pflegen.

Danke :)
 

Oliver Gierke

Erfahrenes Mitglied
Ernsthaft, für ein Bulkdelete ist ein OR-Mapper vielleicht nicht unbedingt das richtige Mittel der Wahl. Wie wär es mit einfachem JDBC?

Gruß
Ollie
 

gorefest

Erfahrenes Mitglied
nee lass mal, bei ca 11000 Tabellen möchte ich nicht händisch darin herumfummeln, dann lieber eine containerlösung :)
 

Niko Schmidke

Grünschnabel
Hallo, das müsste hier passen.
Ich will alle Klassen finden die mit @Entity annotiert sind.

Ich habe es schon mit ClassPathScanningCandidateComponentProvider.findCandidateComponents() versucht. Local hats funktioniert, auf dem JBoss 5.1 und Spring 2.5 nicht mehr. Gibt es vielleicht andere Möglichkeiten?
 
Zuletzt bearbeitet: