0

嘿,我正在尝试从 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 from RECS R where R.P_ID = 9 and NAME = NULL

显然,该操作不会删除任何内容,因为“NAME = NULL”应该是“NAME IS NULL”。我是否在这里遗漏了一些导致 NHibernate 像对待任何其他值一样对待空值的东西?

谢谢,哈雷尔

4

1 回答 1

2

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

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

于 2009-12-06T21:28:19.393 回答