2009-12-06 96 views
0

嗨,我試圖從用於Oracle 10g表中刪除下述結構的實體刪除對象:用下面的映射NHibernate的 - 與複合PK,PK的時候列之一是NULL

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 

Obvioisly,該操作將刪除,因爲「NAME沒有= NULL'應該是'NAME IS NULL'。 我在這裏錯過了什麼導致NHibernate像對待任何其他值nulls?

感謝, 哈雷爾

回答

2

「說表的PK是P_ID和 名稱的列(組合鍵),當 NAME允許空值」

不可能的。主鍵列不能爲空。你擁有的是沒有主鍵的表格,這就是你遇到問題的原因。