正确加入Hibernate
我在使用 Hibernate 时遇到以下问题: 我有两个课程:
1)Sprawozdanie
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.mg.shared.Sprawozdanie" table="sprawozdania">
<id column="spr_id" name="id" type="int">
<generator class="increment"/>
</id>
<property column="spr_od" generated="never" lazy="false" name="Od" type="date"/>
<property column="spr_do" generated="never" lazy="false" name="Do" type="date"/>
<property column="spr_typ_okresu" generated="never" lazy="false"
name="TypOkresu" type="string"/>
<property column="spr_kurs" generated="never" lazy="false" name="Kurs" type="float"/>
<property column="spr_dsp_nazwa" generated="never" lazy="false"
name="NazwaDysponenta" type="string"/>
<property column="spr_dsp_adres" generated="never" lazy="false"
name="AdresDysponenta" type="string"/>
<property column="spr_dsp_regon" generated="never" lazy="false"
name="RegonDysponenta" type="string"/>
<property column="spr_dsp_wojew_kod" generated="never" lazy="false"
name="KodWojDysponenta" type="string"/>
<property column="spr_dsp_wojew_nazwa" generated="never" lazy="false"
name="NazwaWojDysponenta" type="string"/>
<property column="spr_dsp_powiat_kod" generated="never" lazy="false"
name="KodPowiatDysponenta" type="string"/>
<property column="spr_dsp_powiat_nazwa" generated="never" lazy="false"
name="NazwaPowiatDysponenta" type="string"/>
<property column="spr_dsp_gmina_kod" generated="never" lazy="false"
name="KodGminaDysponenta" type="string"/>
<property column="spr_dsp_gmina_nazwa" generated="never" lazy="false"
name="NazwaGminaDysponenta" type="string"/>
<property column="spr_dsp_typ_gminy_kod" generated="never"
lazy="false" name="KodTypGmDysponenta" type="string"/>
<property column="spr_dsp_typ_gminy_nazwa" generated="never"
lazy="false" name="NazwaTypGmDysponenta" type="string"/>
<property column="spr_dsp_zwiazek_jst_kod" generated="never"
lazy="false" name="KodZwJTSDysponenta" type="string"/>
<property column="spr_dsp_typ_zwt_kod" generated="never" lazy="false"
name="KodTypZwDysponenta" type="string"/>
<property column="spr_dsp_instytucja_nadrzedna" generated="never"
lazy="false" name="InstytucjaNadrzednaDysponenta" type="string"/>
<property column="spr_dsp_nazwa_waluty" generated="never" lazy="false"
name="NazwaWalutyDysponenta" type="string"/>
<property column="spr_dsp_symbol_waluty" generated="never"
lazy="false" name="SymbolWalutyDysponenta" type="string"/>
<property column="spr_stan" generated="never" lazy="false" name="Stan" type="string"/>
<property column="spr_data_utworzenia" generated="never" lazy="false"
name="DataUtworyenia" type="date"/>
<property column="spr_data_zaakceptowania" generated="never"
lazy="false" name="DataYaakceptowania" type="date"/>
<property column="spr_data_zatwierdzenia" generated="never"
lazy="false" name="DataYatwierdyenia" type="date"/>
<property column="spr_data_odrzucenia" generated="never" lazy="false"
name="DataOdryucenia" type="date"/>
<property column="spr_data_edycji" generated="never" lazy="false"
name="DataEdycji" type="date"/>
<many-to-one class="com.mg.spr.shared.User" column="spr_uz_login"
lazy="false" name="Uzytkownik" update="false"/>
<many-to-one class="com.mg.spr.shared.Officer" column="spr_dsp_id"
lazy="false" name="Dysponent" update="false"/>
<many-to-one class="com.mg.spr.shared.TypSprawozdania" column="spr_typ_spr_nazwa"
lazy="false" name="TypSpr" update="false"/>
<set name="PozycjeSprawozdania" table="pozycje_sprawozdan" cascade="all" lazy="false" >
<key column="pspr_spr_id" not-null="true" update="true"/>
<one-to-many class="com.mg.shared.PozycjaSprawozdania" />
</set>
</class>
</hibernate-mapping>
2)PozycjaSprawozdania
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.mg.shared.PozycjaSprawozdania" table="pozycje_sprawozdan">
<id column="pspr_id" name="id" type="int">
<generator class="increment"/>
</id>
<property column="pspr_nr_tabeli" generated="never" lazy="false" name="NrTabeli" type="int"/>
<property column="pspr_nr_wiersza" generated="never" lazy="false" name="NrWiersza" type="int"/>
<property column="pspr_dzi_kod" generated="never" lazy="false"
name="DzialKod" type="string"/>
<property column="pspr_roz_kod" generated="never" lazy="false"
name="RozdzialKod" type="string"/>
<property column="pspr_par_kod" generated="never" lazy="false"
name="ParagrafKod" type="string"/>
<property column="pspr_par_typ" generated="never" lazy="false"
name="ParagrafTyp" type="string"/>
<property column="pspr_zad_kod" generated="never" lazy="false"
name="ZadanieKod" type="string"/>
<property column="pspr_zfin_kod" generated="never" lazy="false"
name="ZrodloFinansowaniaKod" type="string"/>
<property column="pspr_dzi_nazwa" generated="never" lazy="false"
name="DzialNazwa" type="string"/>
<property column="pspr_roz_nazwa" generated="never" lazy="false"
name="RozdzialNazwa" type="string"/>
<property column="pspr_par_nazwa" generated="never" lazy="false"
name="ParagrafNazwa" type="string"/>
<property column="pspr_zad_nazwa" generated="never" lazy="false"
name="ZadanieNazwa" type="string"/>
<property column="pspr_zfin_nazwa" generated="never" lazy="false"
name="ZrodloFinansowaniaNazwa" type="string"/>
<property column="pspr_kolumna_01" generated="never" lazy="false"
name="Kolumna01" type="string"/>
<property column="pspr_kolumna_02" generated="never" lazy="false"
name="Kolumna02" type="string"/>
<property column="pspr_kolumna_03" generated="never" lazy="false"
name="Kolumna03" type="string"/>
<property column="pspr_kolumna_04" generated="never" lazy="false"
name="Kolumna04" type="string"/>
<property column="pspr_kolumna_05" generated="never" lazy="false"
name="Kolumna05" type="string"/>
<property column="pspr_kolumna_06" generated="never" lazy="false"
name="Kolumna06" type="string"/>
<property column="pspr_kolumna_07" generated="never" lazy="false"
name="Kolumna07" type="string"/>
<property column="pspr_kolumna_08" generated="never" lazy="false"
name="Kolumna08" type="string"/>
<property column="pspr_kolumna_09" generated="never" lazy="false"
name="Kolumna09" type="string"/>
<property column="pspr_kolumna_10" generated="never" lazy="false"
name="Kolumna10" type="string"/>
<property column="pspr_kolumna_11" generated="never" lazy="false"
name="Kolumna11" type="string"/>
<property column="pspr_kolumna_12" generated="never" lazy="false"
name="Kolumna12" type="string"/>
<property column="pspr_kolumna_13" generated="never" lazy="false"
name="Kolumna13" type="string"/>
<property column="pspr_kolumna_14" generated="never" lazy="false"
name="Kolumna14" type="string"/>
<property column="pspr_kolumna_15" generated="never" lazy="false"
name="Kolumna15" type="string"/>
<property column="pspr_kolumna_16" generated="never" lazy="false"
name="Kolumna16" type="string"/>
<property column="pspr_kolumna_17" generated="never" lazy="false"
name="Kolumna17" type="string"/>
<property column="pspr_kolumna_18" generated="never" lazy="false"
name="Kolumna18" type="string"/>
<property column="pspr_kolumna_19" generated="never" lazy="false"
name="Kolumna19" type="string"/>
<property column="pspr_kolumna_20" generated="never" lazy="false"
name="Kolumna20" type="string"/>
<property column="pspr_kolumna_21" generated="never" lazy="false"
name="Kolumna21" type="string"/>
<property column="pspr_kolumna_22" generated="never" lazy="false"
name="Kolumna22" type="string"/>
<property column="pspr_kolumna_23" generated="never" lazy="false"
name="Kolumna23" type="string"/>
<property column="pspr_kolumna_24" generated="never" lazy="false"
name="Kolumna24" type="string"/>
<property column="pspr_kolumna_25" generated="never" lazy="false"
name="Kolumna25" type="string"/>
<property column="pspr_kolumna_26" generated="never" lazy="false"
name="Kolumna26" type="string"/>
<property column="pspr_kolumna_27" generated="never" lazy="false"
name="Kolumna27" type="string"/>
<property column="pspr_kolumna_28" generated="never" lazy="false"
name="Kolumna28" type="string"/>
<property column="pspr_kolumna_29" generated="never" lazy="false"
name="Kolumna29" type="string"/>
<property column="pspr_kolumna_30" generated="never" lazy="false"
name="Kolumna30" type="string"/>
<many-to-one class="com.mg.shared.Sprawozdanie" column="pspr_spr_id"
lazy="false" name="Sprawozdanie" update="false" insert="false"/>
</class>
</hibernate-mapping>
我使用 Jasperreports 来生成报告。一些数据位于 Sprawozdanie,一些数据位于 PozycjaSprawozdania。当我使用此查询时:
listOfData = session.createQuery("Select spr from Sprawozdanie spr left join fetch spr.PozycjeSprawozdania").list();
我收到此错误:
51142 [btpool0-2] ERROR org.hibernate.LazyInitializationException - failed to lazily initialize a collection, no session or session was closed
I have the following problem with Hibernate:
I have got two classes:
1) Sprawozdanie
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.mg.shared.Sprawozdanie" table="sprawozdania">
<id column="spr_id" name="id" type="int">
<generator class="increment"/>
</id>
<property column="spr_od" generated="never" lazy="false" name="Od" type="date"/>
<property column="spr_do" generated="never" lazy="false" name="Do" type="date"/>
<property column="spr_typ_okresu" generated="never" lazy="false"
name="TypOkresu" type="string"/>
<property column="spr_kurs" generated="never" lazy="false" name="Kurs" type="float"/>
<property column="spr_dsp_nazwa" generated="never" lazy="false"
name="NazwaDysponenta" type="string"/>
<property column="spr_dsp_adres" generated="never" lazy="false"
name="AdresDysponenta" type="string"/>
<property column="spr_dsp_regon" generated="never" lazy="false"
name="RegonDysponenta" type="string"/>
<property column="spr_dsp_wojew_kod" generated="never" lazy="false"
name="KodWojDysponenta" type="string"/>
<property column="spr_dsp_wojew_nazwa" generated="never" lazy="false"
name="NazwaWojDysponenta" type="string"/>
<property column="spr_dsp_powiat_kod" generated="never" lazy="false"
name="KodPowiatDysponenta" type="string"/>
<property column="spr_dsp_powiat_nazwa" generated="never" lazy="false"
name="NazwaPowiatDysponenta" type="string"/>
<property column="spr_dsp_gmina_kod" generated="never" lazy="false"
name="KodGminaDysponenta" type="string"/>
<property column="spr_dsp_gmina_nazwa" generated="never" lazy="false"
name="NazwaGminaDysponenta" type="string"/>
<property column="spr_dsp_typ_gminy_kod" generated="never"
lazy="false" name="KodTypGmDysponenta" type="string"/>
<property column="spr_dsp_typ_gminy_nazwa" generated="never"
lazy="false" name="NazwaTypGmDysponenta" type="string"/>
<property column="spr_dsp_zwiazek_jst_kod" generated="never"
lazy="false" name="KodZwJTSDysponenta" type="string"/>
<property column="spr_dsp_typ_zwt_kod" generated="never" lazy="false"
name="KodTypZwDysponenta" type="string"/>
<property column="spr_dsp_instytucja_nadrzedna" generated="never"
lazy="false" name="InstytucjaNadrzednaDysponenta" type="string"/>
<property column="spr_dsp_nazwa_waluty" generated="never" lazy="false"
name="NazwaWalutyDysponenta" type="string"/>
<property column="spr_dsp_symbol_waluty" generated="never"
lazy="false" name="SymbolWalutyDysponenta" type="string"/>
<property column="spr_stan" generated="never" lazy="false" name="Stan" type="string"/>
<property column="spr_data_utworzenia" generated="never" lazy="false"
name="DataUtworyenia" type="date"/>
<property column="spr_data_zaakceptowania" generated="never"
lazy="false" name="DataYaakceptowania" type="date"/>
<property column="spr_data_zatwierdzenia" generated="never"
lazy="false" name="DataYatwierdyenia" type="date"/>
<property column="spr_data_odrzucenia" generated="never" lazy="false"
name="DataOdryucenia" type="date"/>
<property column="spr_data_edycji" generated="never" lazy="false"
name="DataEdycji" type="date"/>
<many-to-one class="com.mg.spr.shared.User" column="spr_uz_login"
lazy="false" name="Uzytkownik" update="false"/>
<many-to-one class="com.mg.spr.shared.Officer" column="spr_dsp_id"
lazy="false" name="Dysponent" update="false"/>
<many-to-one class="com.mg.spr.shared.TypSprawozdania" column="spr_typ_spr_nazwa"
lazy="false" name="TypSpr" update="false"/>
<set name="PozycjeSprawozdania" table="pozycje_sprawozdan" cascade="all" lazy="false" >
<key column="pspr_spr_id" not-null="true" update="true"/>
<one-to-many class="com.mg.shared.PozycjaSprawozdania" />
</set>
</class>
</hibernate-mapping>
2) PozycjaSprawozdania
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.mg.shared.PozycjaSprawozdania" table="pozycje_sprawozdan">
<id column="pspr_id" name="id" type="int">
<generator class="increment"/>
</id>
<property column="pspr_nr_tabeli" generated="never" lazy="false" name="NrTabeli" type="int"/>
<property column="pspr_nr_wiersza" generated="never" lazy="false" name="NrWiersza" type="int"/>
<property column="pspr_dzi_kod" generated="never" lazy="false"
name="DzialKod" type="string"/>
<property column="pspr_roz_kod" generated="never" lazy="false"
name="RozdzialKod" type="string"/>
<property column="pspr_par_kod" generated="never" lazy="false"
name="ParagrafKod" type="string"/>
<property column="pspr_par_typ" generated="never" lazy="false"
name="ParagrafTyp" type="string"/>
<property column="pspr_zad_kod" generated="never" lazy="false"
name="ZadanieKod" type="string"/>
<property column="pspr_zfin_kod" generated="never" lazy="false"
name="ZrodloFinansowaniaKod" type="string"/>
<property column="pspr_dzi_nazwa" generated="never" lazy="false"
name="DzialNazwa" type="string"/>
<property column="pspr_roz_nazwa" generated="never" lazy="false"
name="RozdzialNazwa" type="string"/>
<property column="pspr_par_nazwa" generated="never" lazy="false"
name="ParagrafNazwa" type="string"/>
<property column="pspr_zad_nazwa" generated="never" lazy="false"
name="ZadanieNazwa" type="string"/>
<property column="pspr_zfin_nazwa" generated="never" lazy="false"
name="ZrodloFinansowaniaNazwa" type="string"/>
<property column="pspr_kolumna_01" generated="never" lazy="false"
name="Kolumna01" type="string"/>
<property column="pspr_kolumna_02" generated="never" lazy="false"
name="Kolumna02" type="string"/>
<property column="pspr_kolumna_03" generated="never" lazy="false"
name="Kolumna03" type="string"/>
<property column="pspr_kolumna_04" generated="never" lazy="false"
name="Kolumna04" type="string"/>
<property column="pspr_kolumna_05" generated="never" lazy="false"
name="Kolumna05" type="string"/>
<property column="pspr_kolumna_06" generated="never" lazy="false"
name="Kolumna06" type="string"/>
<property column="pspr_kolumna_07" generated="never" lazy="false"
name="Kolumna07" type="string"/>
<property column="pspr_kolumna_08" generated="never" lazy="false"
name="Kolumna08" type="string"/>
<property column="pspr_kolumna_09" generated="never" lazy="false"
name="Kolumna09" type="string"/>
<property column="pspr_kolumna_10" generated="never" lazy="false"
name="Kolumna10" type="string"/>
<property column="pspr_kolumna_11" generated="never" lazy="false"
name="Kolumna11" type="string"/>
<property column="pspr_kolumna_12" generated="never" lazy="false"
name="Kolumna12" type="string"/>
<property column="pspr_kolumna_13" generated="never" lazy="false"
name="Kolumna13" type="string"/>
<property column="pspr_kolumna_14" generated="never" lazy="false"
name="Kolumna14" type="string"/>
<property column="pspr_kolumna_15" generated="never" lazy="false"
name="Kolumna15" type="string"/>
<property column="pspr_kolumna_16" generated="never" lazy="false"
name="Kolumna16" type="string"/>
<property column="pspr_kolumna_17" generated="never" lazy="false"
name="Kolumna17" type="string"/>
<property column="pspr_kolumna_18" generated="never" lazy="false"
name="Kolumna18" type="string"/>
<property column="pspr_kolumna_19" generated="never" lazy="false"
name="Kolumna19" type="string"/>
<property column="pspr_kolumna_20" generated="never" lazy="false"
name="Kolumna20" type="string"/>
<property column="pspr_kolumna_21" generated="never" lazy="false"
name="Kolumna21" type="string"/>
<property column="pspr_kolumna_22" generated="never" lazy="false"
name="Kolumna22" type="string"/>
<property column="pspr_kolumna_23" generated="never" lazy="false"
name="Kolumna23" type="string"/>
<property column="pspr_kolumna_24" generated="never" lazy="false"
name="Kolumna24" type="string"/>
<property column="pspr_kolumna_25" generated="never" lazy="false"
name="Kolumna25" type="string"/>
<property column="pspr_kolumna_26" generated="never" lazy="false"
name="Kolumna26" type="string"/>
<property column="pspr_kolumna_27" generated="never" lazy="false"
name="Kolumna27" type="string"/>
<property column="pspr_kolumna_28" generated="never" lazy="false"
name="Kolumna28" type="string"/>
<property column="pspr_kolumna_29" generated="never" lazy="false"
name="Kolumna29" type="string"/>
<property column="pspr_kolumna_30" generated="never" lazy="false"
name="Kolumna30" type="string"/>
<many-to-one class="com.mg.shared.Sprawozdanie" column="pspr_spr_id"
lazy="false" name="Sprawozdanie" update="false" insert="false"/>
</class>
</hibernate-mapping>
I use a Jasperreports to generate reports. Some of data is in Sprawozdanie and some is in PozycjaSprawozdania. When I am using this query:
listOfData = session.createQuery("Select spr from Sprawozdanie spr left join fetch spr.PozycjeSprawozdania").list();
I recive this error:
51142 [btpool0-2] ERROR org.hibernate.LazyInitializationException - failed to lazily initialize a collection, no session or session was closed
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不久前我在我的项目中遇到了同样的错误。事实证明,在其中一个实体中,我忘记分配注释。在您的情况下,这将在 XML 映射中,您是否在某处错过了关系映射?另外,尝试更改所有关系的获取类型,以查看问题是否消失。如果问题确实消失了,请将关系一一改回惰性状态,直到出现问题。
I was getting the same error a while back on my project. Turned out that in one of the entities I had forgotten to assign an annotation. In your case that would be in the XML mapping, did you miss a relationship mapping somewhere? Also, try changing the fetch type on all the relationships to eager to see if the problem goes away. if the problem does go away, change the relationships back to lazy one by one till something breaks.