JPA 2.1, Oracle DB kullanıyorum ve kaldırılacak varlıklar için bir ids listesi var (yaklaşık 430000 kimlikleri). İlk olarak, 1000 ids ile daha küçük olan her birine kimlik listesi ayırma, JPQL için parametreler olarak geçirme ve yürütme olarak uygulandı.JPA KriterleriDeğerli parametrelerEkran
delete from SOPFilter f where f.id in (?1)
Sonra ben JPA CriteriaDelete kullanmak değiştirmek istiyorum.
CriteriaDelete<SOPFilter> criteriaDelete = cb.createCriteriaDelete(SOPFilter.class);
Root<SOPFilter> from = criteriaDelete.from(SOPFilter.class);
criteriaDelete.where(from.get(SOPFilter_.id).in(sopFilterIds));
o 90000 tane ulaşmak ve onu
org.hibernate.SessionException burada durdurmak için neden bir çalışma zamanı istisna vardır dek işime çalışır: Oturum
kapatılır ve yapmak varlık yöneticisi fabrikası kapanacak.
BİLGİ: bernate.impl.StmpContainerEntityManagerFactoryBean: Bu istisna
java.lang ile ilk postayla saptırmak
kimin için sebat birimi 'IMOFFERINGMANAGEMENT' için JPA EntityManagerFactory kapatılıyor. IllegalStateException: EntityManagerFactory,
Yakalama yapıldı Runtime atmadan önce veritabanına bir kayıt ekleyerek çalışma zamanı özel durumunu işlemek için. Ve bir olay kaydı eklemek için, şu anda kapalı olan fabrikadan başka bir varlık yöneticisi oluşturmaya çalışır.
public static void logEvent(EntityManager em) {
EntityManager em2 = null;
EntityManagerFactory emFactory = em.getEntityManagerFactory();
em2 = emFactory.createEntityManager();
// ...
}
Herkes üzerinde biraz ışık tutabilir mi?
üzerinde
da olabilir zaman aşımları JPA CriteriaDelete nasıl kullandıklarını biraz daha bilgi verin - Bir ipucu ayarlayabilirsiniz. Ayrıca sorunuza göre kontrolünüz 90000 satıra ulaştığında yaklaşık 43000 kimliğiniz var ve istisna atıldı mı? 9000'inci sırada mı demek istiyorsun? –
EMF nasıl kapatılabilir? Sonunda bir bloğun parçası ve bazı istisnalar atıldı? tahmin etmek, insanların bu bilgi ile yapabilecekleri her şeydir –
Donald Trump'un sesindeki başlığı okuduğum garip mi? – shmosel