我对NH 3.4.1
有疑问我有这样的映射:
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly=..." namespace="...">
<class name="ProductCategory" table="dbo.ProductCategory">
.....
<bag name="ParentRelations" table="ProductCategoryRelation" lazy="true" batch-size="100">
<key column="ProdCatRelCatNumber" />
<one-to-many class="CategoryRelation" />
</bag>
</class>
</hibernate-mapping>
和
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="..." namespace="...">
<class name="CategoryRelation" table="dbo.ProductCategoryRelation">
<composite-id>
<key-many-to-one name="Parent" class="ProductCategory" column="ProdCatRelParentCatNumber" />
<key-many-to-one name="Child" class="ProductCategory" column="ProdCatRelCatNumber" />
</composite-id>
<property name="Priority" column="ProdCatRelPriority" />
</class>
</hibernate-mapping>
所以我有一个与另一个实体有一对多关系的实体。关系表包含重要的优先级列。
问题是当我仅更新CategoryRelation实体的优先级列时--NH生成一个UPDATE,但是当我创建新关系或删除现有关系时 - 它为所有关系创建DELETE并为每个关系创建INSERT。没关系。我知道idbag,但我不能在这里使用它。
主要问题是 - 当它创建INSERT时 - 它跳过优先级列。所以插入/删除后我的所有优先级都丢失了。你知道问题出在哪里吗?我很确定它是映射问题,但无法找到并修复。
我所需要的只是让它记住优先级并将它们与关系一起插入。
感谢。