Hibernate:映射集合交叉引用表中的“其他”列

时间:2012-04-16 18:20:54

标签: hibernate

我的对象模型包含2个感兴趣的对象,一个RuleGroup和一个规则

我的RuleGroup对象包含一组规则。

因此,我有一个名为RULE_GRP_MEMBER的交叉引用表,它在RULE_GRP表和RULE表之间进行映射,以指定哪些规则属于RuleGroup。

我的RuleGroup映射文件如下所示,这没有问题。

<class name="a.b.c.d.RuleGroup" table="RULE_GRP">
    <id name="ruleGroupID" column="RULE_GRP_ID">
        <generator class="increment"/>
    </id>
    <set name="rules" lazy="true" cascade="save-update" table="RULE_GRP_MEMBER">
        <key column="RULE_GRP_ID" not-null="false"/>
        <!-- Unique set to true makes this a one to many relationship -->
        <many-to-many unique="true" column="RULE_ID" class="a.b.c.d.Rule"/>
    </set>
....
</class>

我的规则映射文件不包含对RuleGroup对象的任何引用。

问题是我们现在在RULE_GRP_MEMBER表上引入了一个新的非空字段RULE_SEQ。因此,当新规则添加到RuleGroup时,新行将添加到RULE_GRP_MEMBER表中。

如何将此RULE_SEQ字段映射到我的对象?理想情况下,我想将它映射到我的Rule对象,但我不确定 我应该使用什么Hibernate概念。

由于

1 个答案:

答案 0 :(得分:1)

在这种情况下,您可能需要为连接表创建一个POJO,其中包含连接表的列。这将具有复合键RULE_GRP_ID,RULE_ID。新列seq应理想地在此新HBM中定义,因为它属于连接表。

然后,您可以从RULE,RUL_GRP表中添加集映射。