Hibernate映射文件相当于referencedColumnsProperty的JoinColu

2019-10-30 04:40发布

有谁知道Hibernate映射文件相当于一个@JoinColumns注释,像这样的referencedColumnName属性:

@ManyToOne
@JoinColumns ({
    @JoinColumn(name="FIELD_0", referencedColumnName="A", insertable=false, updateable=false),
    @JoinColumn(name="FIELD_1", referencedColumnName="B", insertable=false, updateable=false),
    @JoinColumn(name="FIELD_2", referencedColumnName="C", insertable=false, updateable=false),
    @JoinColumn(name="FIELD_3", referencedColumnName="D", insertable=false, updateable=false)

移动到注解是不是一种选择,我们需要建立一个复合键,其中列名表之间不同的外键引用。

提前致谢。

Answer 1:

我一直对这个同样的问题。 我看到你的问题之前,我解决了它,想我会回到这里来帮助你。 我使用的是4.2.2。

我泛型化的名字,但我想你会得到点。 “父”类包含“子”对象的集合,这意味着“孩子”表有一个外键约束“父”表。

密切注意以下几点:1,在收集键的列的顺序必须在复合-ID的顺序一致。 2.包装袋上收集的属性是非常重要的。 我有下面是为我工作。

<class name="ParentClass" table="parent_table">
    <composite-id name="parentCompositeId" class="ParentCompositeId">
        <key-property name="pkName1" column="pk_name_1" type="integer"/> 
        <key-property name="pkName2" column="pk_name_2" type="string"/>
        <generator class="assigned" />
    </composite-id>

    <property name="name" column="name" type="string" />
    <!-- etc... -->

    <bag name="childObjects" table="child_table" cascade="all" lazy="false" fetch="select">
        <key not-null="true">
            <column name="fk_child_name_1"/>
            <column name="fk_child_name_2"/>
        </key>
        <one-to-many class="ChildClass"/>
    </bag>
</class>

另外,不要尝试在任一“子”类或它的映射配置的关联做任何事情。 只是映射非FK性能,让Hibernate采取FKS的照顾。



文章来源: Hibernate mapping file equivalent of referencedColumnsProperty in JoinColumns annotation