我有一个复合组件,它具有多对一的引用。
class MyComposite
{
SomeEntity ManyToOne { get; set; }
SomeOtherUserType Value { get; set; }
}
为了便于映射,我做了一个ICompositeUserType
包含这个组件的自定义:
class MyCompositeUserType : ICompositeUserType
{
// ...
private static readonly IType[] _propertyTypes = new[]
{
new ManyToOneType("SomeEntity"),
new CustomType(typeof(SomeOtherUserType))
};
// ...
}
现在,我有一个composite-element
包含此组件的 s 集合:
<class name="Container">
...
<set name="Pairings"
cascade="all-delete-orphan"
generic="true"
lazy="false"
table="Pairings"
fetch="join">
<key column="ContainerId" />
<composite-element class="Pair">
<property name="Item1" type="mycomposite" lazy="false">
<column name="Entity1Id" />
<column name="Amount1" />
</property>
<property name="Item2" type="mycomposite" lazy="false">
<column name="Entity2Id" />
<column name="Amount2" />
</property>
<property name="Tag" column="Tag" />
</composite-element>
</set>
</class>
当我查询Container
该类时,该Pairings
集合按设计被急切地加载,但是,然后我得到一个N+1选择,SomeEntity
它构成了MyCompositeUserType
. 我想加载这些实体以及Pairings
集合上的连接。
如何指定?