Hazırda Beklet: LazyİnitializationException: proxy başlatılamadı
İşte beni rahatsız eden bir. Temel DAO Hazırda bir yapı uygulamak için çalışıyorum, ama bir sorun yaşıyorum.
İşte gerekli kod:
int startingCount = sfdao.count();
sfdao.create( sf );
SecurityFiling sf2 = sfdao.read( sf.getId() );
sfdao.delete( sf );
int endingCount = sfdao.count();
assertTrue( startingCount == endingCount );
assertTrue( sf.getId().longValue() == sf2.getId().longValue() );
assertTrue( sf.getSfSubmissionType().equals( sf2.getSfSubmissionType() ) );
assertTrue( sf.getSfTransactionNumber().equals( sf2.getSfTransactionNumber() ) );
Sf2 karşılık gelen değeri için sf değeri karşılaştırmak için çalışıyor üçüncü assertTrue başarısız. İşte bu özel durum:
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at com.freightgate.domain.SecurityFiling_$$_javassist_7.getSfSubmissionType(SecurityFiling_$$_javassist_7.java)
at com.freightgate.dao.SecurityFilingTest.test(SecurityFilingTest.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:40)
Gerekirse DAO ve açıklama kodumu ekleyebilirsiniz. Ne gerekiyorsa lütfen bildirin.
TİA
Piko
CEVAP
Sorun detached bir nesne, bir toplama ulaşmaya çalışıyorsunuz. Geçerli oturum için toplama erişmeden önce yeniden takmak nesne gerekir. Bu işi de yapabilirsiniz
session.update(object);
lazy=false
kullanma hazırda bekleme Tembel Başlatma özelliği heba ediyorsun, çünkü bu iyi bir çözüm değildir. lazy=false
koleksiyon nesnesi istenen aynı anda belleğe yüklenir. Bu ise 1000 parçadan oluşan bir koleksiyonu var, hepsi onlara erişmek için gidiyoruz rağmen ya da değil, bellekte yüklü olacağı anlamına gelir. Ve bu hiç iyi değil.
Lütfen sorun nerede açıklar, olası çözümleri ve neden bu şekilde uygulanan bu article okuyun. Ayrıca, Oturumları ve İşlemleri anlamak için this other article okumak gerekir.
Dönüştürme gerçek nesne için bir proxy...
'JPA arasındaki fark ne ve Hazırd...
Nasıl "VEYA&Hazırda Beklet ile bi...
Hazırda Beklet: Kriterleri vs HQL...
Hazırda Beklet - Çağlayan ile Bir kole...