【问题标题】:NHibernate - Deleting objects with composite PK, when one of the PK columns is NULLNHibernate - 当 PK 列之一为 NULL 时,删除具有复合 PK 的对象
【发布时间】:2010-12-23 18:43:39
【问题描述】:

嘿,我正在尝试从 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 将空值视为任何其他值的东西?

谢谢, 哈雷尔

【问题讨论】:

    标签: oracle nhibernate composite-key


    【解决方案1】:

    "说表的 PK 是 P_ID 并且 NAME 列(复合键),当 NAME 允许空值"

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 2016-12-06
      • 2010-12-09
      • 2018-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多