NHibernate - удаление объектов с составным PK, когда один из столбцов PK равен NULL. - PullRequest
0 голосов
/ 06 декабря 2009

Эй, я пытаюсь удалить объект следующей структуры из таблиц 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 обрабатывать нули как любые другие значения?

Спасибо, Harel

1 Ответ

2 голосов
/ 07 декабря 2009

"говорят, что PK таблицы P_ID и NAME столбцы (составной ключ), когда NAME allow null "

Не возможно. Столбец первичного ключа не может быть пустым. У вас есть таблица БЕЗ первичного ключа, поэтому у вас возникают проблемы.

...