Есть ли способ использовать сопоставление объединенного подкласса с тем же именем столбца в NH 5.2? - PullRequest
0 голосов
/ 30 октября 2019

Краткое введение: Итак, в Nhibernate 5.2 существует проблема, заключающаяся в том, что по какой-то причине вы не можете сопоставить несколько свойств одному столбцу базы данных (как вы могли это делать в предыдущих версиях). Сообщение об ошибке:

 _Unable to build the insert statement for class Application: a failure occured when adding the Id of the class'_

_ArgumentException: The column 'SYSTEM_ID' has already been added in this SQL builder_

Обходной путь должен добавить insert = "false" и update = "false" к отображению таких свойств. Я уже сделал это для 50+ файлов hbm.xml, но, к сожалению, я получаю ту же ошибку для 1 файла сопоставления, содержащего 4 <joined-subclass> элементов, которые имеют одинаковое имя ключевого столбца.

Наш hbm.xmlсопоставления выглядят так:

<class name="System" table="SYSTEMS" polymorphism="explicit" >

<id name="Id" column="SYSTEM_ID">
  <generator class="trigger-identity" />
</id>

<property name="Type" column="SYSTEM_TYPE" type="AnsiString" />   

...     
<joined-subclass name="Application" table="APPLICATIONS">
<key column="SYSTEM_ID" on-delete="cascade"></key>

Проблема: К сожалению, нет способа установить insert = "false" для ключа, и мы не можем изменить имя столбца, поэтому мы вышлиидей, как это можно решить. Эти сопоставления работали в более старых версиях nhibernate, и даже официальная документация NH для присоединенного подкласса имеет пример , где используется одно и то же имя столбца, поэтому я не уверен, что это ошибка или есть обходной путь, который мы можемиспользовать.

...