请教大虾们Hibernate many-to-one的Lazy设置的问题..在线等!!
看了hibernate的帮助文档,要实现many-to-one的lazy加载,什么都不设置应该就可以了.
(lazy default 是proxy)
我现在的配置:
<class
name="MzUserTerritoryMst"
table="MZ_USER_TERRITORY_MST"
lazy="true"
>
<property>
...
</property>
<!-- union-directional many-to-one association to MzTerritoryMst -->
<many-to-one
name="mzTerritory"
class="MzTerritoryMst"
insert="false"
update="false"
not-found="ignore"
lazy="proxy"
foreign-key="none"
>
<column name="SYS_OWNER_CD"/>
<column name="TERRITORY_CD"/>
</many-to-one>
</class>
<class
name="MzTerritoryMst"
table="MZ_TERRITORY_MST"
lazy="true"
>
<property>
...
</property>
</class>
not-found="ignore"这么设置之后..lazy就无效了..如果not-found不设置..lazy就有生效..------解决方案--------------------Hibernate的many-to-one的元素的一个属性:not-found
用来指定引用的外键不存在时将如何处理:
exception(默认)抛出异常
ignore 忽略
------解决方案--------------------hibernate中默认就是lazy的,并不需要设置。
------解决方案--------------------lazy默认为true,即延迟加载,查询与更新必须在一个Session中,Session不能关闭。
lazy为false,即立即加载,查询同时查询出与其相关的数据。
------解决方案--------------------这是一个延迟加载的问题 默认是lazy是true,也就是懒惰的,查只查属性本身,你要查的是关联属性,把lazy改为false是不可取的,因为这样不安全,每次查的时候都会把属性以及属性相关联的都给查出来。
解决方法:
1,查询的list,在循环一次,把原先查的值给覆盖掉,用关联属性去填充。添加到list中,保存至作用域,在调用。
2.用Criteria查询,具体语法自己查相关资料
一般1方法可以解决......
不足之处,还望高手补充........