对于One-to-One映射,当我们需要懒加载的时候需要如下配置:
我们期望当查询tseal时能够懒加载tsealdata,
在seal的hbm文件中:
<one-to-one name="sealData"
class="com.bjSealData"
cascade="save-update" lazy="proxy"/>
在sealdata的hbm文件中:
<one-to-one name="seal"
class="com.bj.Seal" cascade="save-update" constrained="true"/>
同时在sealdata的class中配置lazy=true如下:
<class name="com.bj.SealData"
table="tsealdata" dynamic-update="true" dynamic-insert="true"
select-before-update="false" lazy="true">
但是却没有实现懒加载我们需要改为:
在seal的hbm文件中:
<one-to-one name="sealData"
class="com.bjSealData"
cascade="save-update" lazy="proxy" constrained="true"//>
在sealdata的hbm文件中:
<one-to-one name="seal"
class="com.bj.Seal" cascade="save-update" >
但此时保存就会出问题:
异常如下:
org.hibernate.id.IdentifierGenerationException: attempted to assign id from null one-to-one property: seal
这是一件矛盾的事。解决方案请看下文。