我有一个相当复杂的场景/设计要理清,并且非常欣赏一些建议或见解。
我试图将以下内容映射得不太成功。
<class name="CalEvent" table="tb_calEvents" lazy="false" >
<id name="id" column="id">
<generator class="hilo"/>
</id>
<property name="summary"/>
---snip----
<bag name="categories" table="tb_calEvent_category" lazy="false">
<key column="parentID"/>
<one-to-many class="Category"/>
</bag>
//////////////////
<class name="Category" table="tb_calEvent_category" lazy="false">
<id name="id" column="id" unsaved-value="0">
<generator class="hilo"/>
</id>
<property name="categoryID"/>
<property name="parentID"/>
<property name="categoryType"/>
类别表
[id] bigint NULL [parentID] bigint NULL [categoryType] nvarchar(255)NULL [categoryID] int NULL CONSTRAINT [tb_calEvent_category_fk] FOREIGN KEY([parentID])
上面的tb_calEvent_category表似乎已被设置为一种查找表。 每个表中有3种不同的类别; catergoryType是对类别所在表的引用以及该表主键的categoryID。
我检索calEvents没有问题,但无法干净地添加或更新。
有没有人想过如何映射这个?可能吗?或者我是否需要跳过一些箍来成功地将calEvents添加并更新到db?
我认为此表已经设置为这样可以减少连接或者可以添加其他类别。嗯..
谢谢
答案 0 :(得分:2)
我认为这是你的主要问题:
<id name="id" column="id" unsaved-value="0">
<generator class="hilo"/>
</id>
<property name="categoryID"/>
当您尝试将类别ID设置两次时。
这可能更像你所需要的:
<id name="id" column="categoryID" unsaved-value="0">
<generator class="hilo"/>
</id>
另外,使用sqlserver身份生成器(本机)可能更好,确保在sqlserver中将列设置为identifier,并确保FK关系正常。