I'm setting up a basic test data util and want to keep track of all the data that the EntityManager handles. Rather than just having a bunch of lists for each entity is there a way to grab everything being managed by the EntityManager in one fell swoop?
So instead of this:
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);
}
I want something like this;
EntityManager em;
cleanup() {
List<Object> allEntities = em.getAllManagedEntities(); //<-this doesnt exist
for(Object o : allEntities) em.remove(o);
}
Not sure if this is possible, but I just would image that the manager knows what it is managing? Or, if you have any ideas of managing a bunch of entities easily.
I think this might help:
for (EntityType<?> entity : entityManager.getMetamodel().getEntities()) {
final String className = entity.getName();
log.debug("Trying select * from: " + className);
Query q = entityManager.createQuery("from " + className + " c");
q.getResultList().iterator();
log.debug("ok: " + className);
}
Basically EntityManager::MetaModel contains the MetaData information regarding the Entities managed.