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
 
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
 
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
 
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 :)
 
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
 
nee lass mal, bei ca 11000 Tabellen möchte ich nicht händisch darin herumfummeln, dann lieber eine containerlösung :)
 
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:
Zurück