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 は null を許可しますが、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 が null を他の値と同様に扱う原因となる何かが欠けているのでしょうか?

ありがとう、ハレル

4

1 に答える 1

2

「NAMEがNULLを許可する場合、テーブルのPKはP_IDおよびNAME列(複合キー)であるとします」

ありえない。主キー列を null にすることはできません。あなたが持っているのは、主キーのないテーブルであるため、問題が発生しています。

于 2009-12-06T21:28:19.393 に答える