Tôi đang thiết lập một dữ liệu thử nghiệm cơ bản và muốn theo dõi tất cả dữ liệu mà EntityManager xử lý. Thay vì chỉ có một loạt các danh sách cho mỗi thực thể là có một cách để lấy tất cả mọi thứ được quản lý bởi EntityManager trong một ngã swoop?Có cách nào để có được tất cả các thực thể được quản lý từ một EntityManager
Vì vậy, thay vì điều này:
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);
}
Tôi muốn một cái gì đó như thế này;
EntityManager em;
cleanup() {
List<Object> allEntities = em.getAllManagedEntities(); //<-this doesnt exist
for(Object o : allEntities) em.remove(o);
}
Không chắc chắn nếu điều này có thể, nhưng tôi sẽ chỉ hình ảnh mà người quản lý biết những gì nó đang quản lý? Hoặc, nếu bạn có bất kỳ ý tưởng quản lý một loạt các thực thể một cách dễ dàng.
Dành cho bất cứ ai khác đi ngang qua: Tên biến "className" đã đánh lừa tôi một chút vì nó thực sự là jpaEntityName. Để có được lớp thực tế người ta nên sử dụng getBindableJavaType. @Faisal, cảm ơn đã chỉ cho tôi đúng hướng – Ittai
Tôi không chắc chắn rằng những gì OP yêu cầu. Có vẻ như in tất cả các thực thể có thể được tìm nạp từ cơ sở dữ liệu, nhưng không phải tất cả các thực thể * hiện * được quản lý bởi EntityManager. –
Điều này chỉ đơn giản là sai! Như @MarcusJuniusBrutus đã chỉ ra, điều này tải tất cả các hàng của tất cả các thực thể đã biết từ DB. Khi mã kết thúc, bạn có thể thực sự có được một bàn tay trên tất cả các thực thể nạp. Nhưng đây không phải là các thực thể được quản lý trước khi thực thi mã. – BetaRide