Sto configurando un dato di prova di base util e voglio tenere traccia di tutti i dati gestiti da EntityManager. Piuttosto che avere un gruppo di liste per ogni entità, c'è un modo per prendere tutto ciò che viene gestito da EntityManager in un colpo solo?C'è un modo per ottenere tutte le entità gestite da un EntityManager
Così, invece di questo:
EntityManager em;
List<Entity1> a;
List<Entity2> b;
...
List<Entityn> n;
cleanup() {
for(Entity1 e : a) em.remove(e);
for(Entity2 f : b) em.remove(f);
...
for(Entityn z : n) em.remove(z);
}
voglio qualcosa di simile;
EntityManager em;
cleanup() {
List<Object> allEntities = em.getAllManagedEntities(); //<-this doesnt exist
for(Object o : allEntities) em.remove(o);
}
Non sono sicuro se questo è possibile, ma ho appena farebbe immagine che il manager sa cosa sia la gestione? Oppure, se hai qualche idea di gestire facilmente un gruppo di entità.
Per qualcun altro che passa: Il nome variabile "className" mi fuorvia un po 'in quanto è in realtà il jpaEntityName. Per ottenere la vera classe si dovrebbe usare getBindableJavaType. @Faisal, grazie per avermi indicato nella giusta direzione – Ittai
Non sono sicuro che faccia quello che l'OP chiedeva. Sembra stampare tutte le entità che possono essere recuperate dal database, ma non tutte le entità * attualmente * gestite da EntityManager. –
Questo è semplicemente sbagliato! Come @MarcusJuniusBrutus sta già segnalando, carica tutte le righe di tutte le entità conosciute dal DB. Quando il codice finisce, puoi effettivamente ottenere una mano su tutte le entità caricate. Ma queste non sono le entità che sono state gestite prima dell'esecuzione del codice. – BetaRide