Моя проблема точно такая же, как описано в следующем посте, но она не получила ответа, и ей 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">