【问题标题】:Properly joining in Hibernate正确加入 Hibernate
【发布时间】:2011-08-11 13:35:15
【问题描述】:

我在使用 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

【问题讨论】:

    标签: java hibernate jasper-reports hql


    【解决方案1】:

    我在项目中遇到了同样的错误。原来,在其中一个实体中,我忘记了分配注释。在您的情况下,将在 XML 映射中,您是否在某处错过了关系映射?此外,尝试更改所有关系的获取类型以急于查看问题是否消失。如果问题确实消失了,将关系一一改回懒惰,直到出现问题。

    【讨论】:

    • 我用的是JRBeanCollectionDataSource(),可能问题存在,因为集合必须和Lazy齐头并进?
    猜你喜欢
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多