Краткое введение: Итак, в 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 для присоединенного подкласса имеет пример , где используется одно и то же имя столбца, поэтому я не уверен, что это ошибка или есть обходной путь, который мы можемиспользовать.