NHibernate中实体的插入语句中不包括带公式的鉴别器列

NHibernate中实体的插入语句中不包括带公式的鉴别器列,nhibernate,Nhibernate,我的问题和下面的帖子描述的完全一样,但还没有得到回答,这是一篇4年前的帖子 总之,我有每个类的表层次结构继承,我在鉴别器列中使用公式。当我尝试插入新记录(实体)时,插入失败,因为生成的sql不包含鉴别器列 或者,我可以定义另一个映射到列的属性,并将鉴别器的“insert”属性设置为false。但是我不喜欢这种方法,因为它会迫使我几乎重写域对象中的公式 如果有人能以更好的方式解决这个问题,我将不胜感激 <class name="Account" table="ACCOUNT" abstra

我的问题和下面的帖子描述的完全一样,但还没有得到回答,这是一篇4年前的帖子

总之,我有每个类的表层次结构继承,我在鉴别器列中使用公式。当我尝试插入新记录(实体)时,插入失败,因为生成的sql不包含鉴别器列

或者,我可以定义另一个映射到列的属性,并将鉴别器的“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)" />


<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">


看看这篇文章是否对你有所帮助:

对于那些想知道我在下面的帖子中得到答案的人

基本上,如果在鉴别器列中使用公式,则需要定义另一个属性并标记鉴别器的属性insert=“false”

class name=“Account”table=“Account”abstract=“true”>

谢谢你的链接,但我已经去过了。我在那里找不到任何答案!!我错过什么了吗?
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" />