Hibernate映射文件等效于JoinColumns注释中的referencedColumnsProperty

Hibernate映射文件等效于JoinColumns注释中的referencedColumnsProperty,hibernate,mapping,key,Hibernate,Mapping,Key,是否有人知道与@JoinColumns注释的referencedColumnName属性等效的hibernate映射文件,类似于: @ManyToOne @JoinColumns ({ @JoinColumn(name="FIELD_0", referencedColumnName="A", insertable=false, updateable=false), @JoinColumn(name="FIELD_1", referencedColumnName="B", inse

是否有人知道与@JoinColumns注释的referencedColumnName属性等效的hibernate映射文件,类似于:

@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)
移动到注释不是一个选项,我们需要使用复合键设置外键引用,其中表之间的列名不同


提前谢谢。

我一直在解决这个问题。在我解决问题之前我看到了你的问题,我想我会回来帮助你。我用的是4.2.2

我把名字一般化了,但我想你会明白的。“parent”类包含“child”对象的集合,这意味着“child”表对“parent”表具有外键约束

请密切注意以下事项: 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>

另外,不要试图在“child”类或其映射配置中处理关联。只需映射非FK属性,让hibernate处理FK