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

  • Associated Press

    Associated P

    18 EYLÜL 2006
  • funbro1

    funbro1

    11 Aralık 2007
  • sdasmarchives

    sdasmarchive

    2 HAZİRAN 2010