【发布时间】:2011-05-21 10:41:41
【问题描述】:
我有一个简单的问题。我在我们的项目中找到了这个 Hibernate 配置:
<many-to-one name="employee"
class="com.myapp.Employee"
cascade="merge"
lazy="false"
fetch="select">
<column name="employee_id"
sql-type="bigint"
not-null="true"/>
</many-to-one>
fetch="select" 不是基于Fetching Strategies 的“延迟加载所有集合和实体”。但是写 lazy="false" 意味着不要延迟加载。所以上面的配置说:“禁用延迟加载。启用延迟加载。”实际上,这意味着该属性是延迟加载的?
所以我可以将该配置缩短为:
<many-to-one name="employee"
class="com.myapp.Employee"
cascade="merge"
fetch="select">
<column name="employee_id"
sql-type="bigint"
not-null="true"/>
</many-to-one>
但是 fetch="select" 不是默认模式吗?所以实际上,我可以声明相同的配置:
<many-to-one name="employee"
class="com.myapp.Employee"
cascade="merge">
<column name="employee_id"
sql-type="bigint"
not-null="true"/>
</many-to-one>
我说的对吗?错误的?想法?谢谢
如果我想启用延迟加载,我必须添加 lazy="true" 并删除 lazy="false"?
【问题讨论】:
标签: hibernate mapping lazy-loading