在从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">
答案 0 :(得分:0)
你的问题远非明确。如果您要执行的操作是加载所有MyClass
个实例及其pTable
父级,则要使用的查询是
select m from MyClass m inner join fetch m.pTable
这当然是在Hibernate reference documentation中描述的。