我有休眠 XML,我想根据鉴别器公式的结果检索一行作为子类的实例。麻烦的是,要检查的字段在引用的表上,而不是在表本身上。我的对象是商家-用户账户,是用户账户和商家的组合。user_account 表有一个角色字段,其中可能包含多个值,其中一些表示管理员权限级别。我想做这样的事情,但这本身(试图userAccount.role
在 case 语句中引用)不起作用:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.rc.model.mexp.MerchantUserAccount" table="merchant_user_account">
<id name="merchantUserAcctId" type="int">
<column name="merchantuseracctid" scale="10" precision="0" not-null="true" unique="true" sql-type="int unsigned"/>
<generator class="com.rc.model.jdbc.sequence.MexpIdentifierGenerator">
<param name="sequence">seq_merchantuseraccountid</param>
<param name="idDataType">int</param>
</generator>
</id>
<discriminator formula="case when userAccount.role in (2, 3, 4, 5) then '1' else '0' end" type="boolean"/>
<many-to-one name="userAccount" class="com.rc.model.user.security.UserAccount" column="userid"
unique="true" not-null="true" cascade="all"/>
<many-to-one name="merchantAccount" class="com.rc.model.mexp.MerchantAccount" column="merchantacctid"
not-null="true" cascade="all"/>
<subclass name="com.rc.model.mexp.AdminMerchantUserAccount" discriminator-value="true"/>
</class>
</hibernate-mapping>
这甚至可能吗?