Konfiguruję podstawowy użytkownik danych testowych i chcę śledzić wszystkie dane obsługiwane przez EntityManager. Zamiast posiadania wielu list dla każdego podmiotu istnieje sposób, aby chwycić wszystko zarządzane przez EntityManager za jednym zamachem?Czy istnieje sposób na uzyskanie wszystkich zarządzanych jednostek z EntityManager
tego Więc zamiast:
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);
}
chcę coś takiego;
EntityManager em;
cleanup() {
List<Object> allEntities = em.getAllManagedEntities(); //<-this doesnt exist
for(Object o : allEntities) em.remove(o);
}
Nie jestem pewien, czy to jest możliwe, ale tylko by obraz, że menedżer wie, co to jest zarządzający? Lub, jeśli masz jakieś pomysły na łatwe zarządzanie grupą jednostek.
Dla ktokolwiek przechodzi obok: Nazwa zmiennej "className" wprowadza mnie w błąd, ponieważ jest to w rzeczywistości jpaEntityName. Aby uzyskać aktualną klasę należy użyć getBindableJavaType. @Faisal, dzięki za wskazanie mi w dobrym kierunku – Ittai
Nie jestem pewien, czy robi to, co PO chciał. Wydaje się, że drukuje wszystkie jednostki, które można pobrać z bazy danych, ale nie wszystkie podmioty, które * obecnie * są zarządzane przez EntityManager. –
To jest po prostu źle! Jak już wskazuje @MarcusJuniusBrutus, to ładuje wszystkie wiersze wszystkich znanych podmiotów z DB. Kiedy kod się skończy, możesz dostać rękę na wszystkich załadowanych elementach. Ale to nie są podmioty, którymi zarządzano przed wykonaniem kodu. – BetaRide