SORU
6 Aralık 2008, CUMARTESİ


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
3 EYLÜL 2010, Cuma


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Angry Paintballer

    Angry Paintb

    8 Ocak 2012
  • Need for Speed

    Need for Spe

    8 ŞUBAT 2006