hibernateTemplate和读取父/子类到dataModel

时间:2011-08-22 19:21:41

标签: hibernate jsf

在从hibernateTemplate()渲染结果成功使用dataModel后,我已经解开了这个目标。 在另一个没有多对一映射到另一个类的类上。

有没有人使用类似下面的定义,你需要所有ParentClass加上子类中的一个属性。 在我的用例中,我需要显示receiptDate以及ParentClass实例中包含的所有其他值。

<hibernate-mapping> <class catalog="myCatalog" name="myCatalog.model.orm.MyClass" table="myTable">
<id name="consignmentId" type="java.lang.Integer">
  <column name="myTable_id"/>
  <generator class="identity"/>
</id>
<many-to-one class="myCatalog.model.orm.ParentClass" fetch="select" name="pTable">
  <column name="pTable_id" not-null="true"/>
</many-to-one>
<property name="receiptDate" type="timestamp">
  <column length="19" name="receipt_date" not-null="true"/>
</property> </class> </hibernate-mapping>

我最近的是: hibernateTemplate()。find(“从myClass c中选择c.parentClass”);

但是,当尝试对parentClass项进行地址时,例如:parentClass.depotAddress 在dataTable中我得到以下错误,因为尚未加载parentClass: org.hibernate.LazyInitializationException:无法初始化代理 - 无会话

我会很感激任何正确方向的指示。

我刚刚找到了一个解决方案,通过强制在ParentClass上加载:

<many-to-one class="myCatalog.model.orm.ParentClass" lazy=false fetch="select" name="pTable">

1 个答案:

答案 0 :(得分:0)

你的问题远非明确。如果您要执行的操作是加载所有MyClass个实例及其pTable父级,则要使用的查询是

select m from MyClass m inner join fetch m.pTable

这当然是在Hibernate reference documentation中描述的。