【问题标题】:Hibernate mapping file equivalent of referencedColumnsProperty in JoinColumns annotation休眠映射文件等效于 JoinColumns 注释中的 referencedColumnsProperty
【发布时间】:2013-06-14 19:56:53
【问题描述】:

有谁知道 @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)

移动到注释不是一个选项,我们需要使用复合键设置外键引用,其中表之间的列名不同。

提前致谢。

【问题讨论】:

    标签: hibernate mapping key


    【解决方案1】:

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

    我概括了这些名称,但我想你会明白的。 “父”类包含“子”对象的集合,这意味着“子”表对“父”表有外键约束。

    请密切注意以下事项: 1.集合键中的列顺序必须与composite-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 处理 FK。

    【讨论】:

      猜你喜欢
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      • 2011-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多