Столбец Дискриминатор с формулой не включен во вложенную оценку сущности в NHibernate - PullRequest
0 голосов
/ 22 марта 2011

Моя проблема точно такая же, как описано в следующем посте, но она не получила ответа, и ей 4 года поста !!!

https://forum.hibernate.org/viewtopic.php?f=1&t=976655

В итоге, у меня есть таблицапо наследству иерархии классов, и я использую формулу в столбце дискриминатора.Когда я пытаюсь вставить новую запись (Entity), вставка завершается неудачно, потому что сгенерированный sql не содержит столбец дискриминатора.

В качестве альтернативы я мог бы определить другое свойство, которое отображается на столбец и сделать атрибут «вставки» дискриминатора ложным.Однако мне не нравится этот подход, так как он заставит меня почти переписать, для чего там была формула в доменном объекте.

Я был бы очень признателен, если бы кто-то еще решил эту проблему как-нибудь лучше.

<class name="Account" table="ACCOUNT" abstract ="true">

<discriminator column ="ACCOUNT_TY" type ="string" formula="(case when ACCOUNT_TY in ('CASHCARD','ORPHAN','BLACK','EXTERNAL', 'INTERNAL') then 'OTHER' else ACCOUNT_TY end)" />


<subclass name ="CreditCardAccount" extends ="Account" discriminator-value="PREPAY" dynamic-update="true" >
<subclass name ="OtherAccount" extends ="Account" discriminator-value="OTHER" dynamic-update="true">
<subclass name ="PostpayAccount" extends ="Account" discriminator-value="POSTPAY" dynamic-update="true">

Ответы [ 2 ]

2 голосов
/ 24 марта 2011

Для тех, кто интересуется, я получил ответ в следующей теме

http://groups.google.com/group/nhusers/browse_frm/thread/3cbf9d9589b6d203

в основном, если вы используете формулу в столбце дискриминатора, вам нужно определить другое свойство и отметить атрибут дискриминатора insert = "false"

class name="Account" table="ACCOUNT" abstract ="true">

<discriminator column ="ACCOUNT_TY" type ="string" formula="(case when ACCOUNT_TY in  ('CASHCARD','ORPHAN','BLACK','EXTERNAL', 'INTERNAL') then 'OTHER' else ACCOUNT_TY end)" insert = "false" />
<property name = "AccountType" column = "ACCOUNT_TY" />
0 голосов
/ 22 марта 2011

Посмотрите, поможет ли вам этот пост: http://nhibernate.info/blog/2010/05/15/not-so-hidden-gems-of-nhibernate-formula-discriminators.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...