NHibernate - 当其中一个PK列为NULL时,删除具有复合PK的对象

时间:2009-12-06 17:31:18

标签: oracle nhibernate composite-key

嘿,我正在尝试从Oracle 10g表中删除以下结构的实体:

class Record 
{
   string id;
   string name;
   DateTime dateTime;
}

使用以下映射:

<class name="Records" table="RECS">
   <composite-id>
      <key-property name="P_ID" />
      <key-property name="NAME" />
   </id>
   <property name="dateTime" column="DATE_TIME_V" />
</class>

现在,假设表的PK是P_ID和NAME列(复合键),当NAME允许空值但P_ID不允许时。 现在,问题是当NHibernate尝试删除一个对象,比如P_ID = 9和NAME = NULL时,它会输出以下delete语句:

delete from RECS R where R.P_ID = 9 and NAME = NULL

很明显,操作将删除任何内容,因为'NAME = NULL'应为'NAME IS NULL'。 我在这里遗漏了一些导致NHibernate像任何其他值一样处理空值的东西吗?

谢谢, Harel的

1 个答案:

答案 0 :(得分:2)

  

“说表格的PK是P_ID和   NAME列(复合键),何时   NAME允许空值“

不可能。主键列不能为空。你所拥有的是没有主键的表,这就是你遇到问题的原因。