2

我有休眠 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>

这甚至可能吗?

4

0 回答 0