我在映射中有一个集合如下:
<set name="Persons" cascade="all" inverse="true" lazy="true">
<key column="idDepartment" />
<one-to-many class="Person" />
</set>
我想懒洋洋地加载persons
中的孩子,
但是person类有很多列,所以数据大小总是很大。
如果我想懒得加载一个列,例如personid
,我该怎么办呢?
答案 0 :(得分:1)
默认情况下,你不能。
您有两种选择。将所有需要的属性标记为延迟加载。然后将使用属性子集获取实体,而稍后获取其他实体。但这可能会严重损害整体性能。
第二个选项是发出单独的查询,以获得您想要的精确列。 Nhiberante有它的项目,或者你可以使用LINQ。
答案 1 :(得分:0)
如果你的用例是你只需要加载一些人,你可以考虑使用lazy =“extra”。
您还可以质疑Person的设计 - 也许较小的Person实体引用更具体和详细的数据是有益的吗?
另一种选择是简单地没有Department.Persons集合。我发现我倾向于避免这种收集,例如集合很大而集合所有者并不真正拥有集合中的项目。