嘿,我正在尝试从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的
答案 0 :(得分:2)
“说表格的PK是P_ID和 NAME列(复合键),何时 NAME允许空值“
不可能。主键列不能为空。你所拥有的是没有主键的表,这就是你遇到问题的原因。