Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > hibernate kullanımı sorunu
Yazar
perihan


avatar
Ankara
Kayıt: 09.01.2006
17.07.2009-09:28 #62597
veri tabanındaki Proje Tablosu
PROJE_ID
PROJE_NO
PROJE_ADI
DOSYA_NO
…….
veri tabanındaki Dokuman Tablosu
DOKUMAN_ID
DOKUMAN_ADI
PROJE_ID

Dokuman hibernateinde
Proje proje; olarak tanımlanmış.ve

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PROJE_ID")

Ben jsp de dokuman.proje.projeId ye erişebiliyorum fakat dokuman.proje.projeAdi na erişemiyorum.Projenin diğer alanlarına erişemiyorum.Bu sorun nerden kaynaklanıyor?

hata mesajı : javax.el.ELException: Error reading 'projeAdi' on type hibernate.Tblproje$$EnhancerByCGLIB$$3e60d638








Yazar
audtou


avatar
malatya
Kayıt: 31.08.2006
17.07.2009-10:54 #62598
perihan yazdi
 
veri tabanındaki Proje Tablosu
PROJE_ID
PROJE_NO
PROJE_ADI
DOSYA_NO
…….
veri tabanındaki Dokuman Tablosu
DOKUMAN_ID
DOKUMAN_ADI
PROJE_ID

Dokuman hibernateinde
Proje proje; olarak tanımlanmış.ve

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PROJE_ID")

Ben jsp de dokuman.proje.projeId ye erişebiliyorum fakat dokuman.proje.projeAdi na erişemiyorum.Projenin diğer alanlarına erişemiyorum.Bu sorun nerden kaynaklanıyor?

hata mesajı : javax.el.ELException: Error reading 'projeAdi' on type hibernate.Tblproje$$EnhancerByCGLIB$$3e60d638


lazy yülemeden dolayı alamıyosun galiba.FetchType.EAGER yaparsan sorun hallolur ama bu iyi bi çözüm olmaz.bu iş için özel bi metod ekle session bean'e,ilgili dokumanin proje nesnesinide ekleyerek döndürsün.





bitiyo lan!
Yazar
perihan


avatar
Ankara
Kayıt: 09.01.2006
17.07.2009-11:13 #62599
Kodda eklemeyi denedim ama NullPointerException oluştu.

protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
TbldokumanDAO dokumanDAO = TbldokumanDAO.getFromApplicationContext(getApplicationContext());
TblprojeDAO projeler=TblprojeDAO.getFromApplicationContext(getApplicationContext());

List <Tbldokuman> dokumanlar = dokumanDAO.findAll();


for ( Tbldokuman dokuman: dokumanlar) {


Tblproje proje=projeler.findById(dokuman.getTblproje().getProjeId());

dokuman.setTblproje(proje);



}
return new ModelAndView("dokumanListele","dokumanlar",dokumanlar);
}







Yazar
perihan


avatar
Ankara
Kayıt: 09.01.2006
17.07.2009-11:38 #62600
audtou yazdi
 

lazy yülemeden dolayı alamıyosun galiba.FetchType.EAGER yaparsan sorun hallolur ama bu iyi bi çözüm olmaz.bu iş için özel bi metod ekle session bean'e,ilgili dokumanin proje nesnesinide ekleyerek döndürsün.


Teşekkürler..FetchType.EAGER yapınca sorun halloldu.Eager ile Lazy arasındaki fark nedir ve FetchType.EAGER kullanımı neden iyi bir çözüm değil acaba?






Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
17.07.2009-12:13 #62601
lazy olsa bile getter çağırınca map ettiğin listeyi getirmesi lazım.
Lazy nesnedeki property nin getter i çağrıldığında datayı yükler. Eager sorguyu yaptıktan sonra yükler.





N/A
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb