【问题标题】:How do I join on two columns in the hibernate mapping file using the <join> tag?如何使用 <join> 标记加入休眠映射文件中的两列?
【发布时间】:2010-12-30 17:47:40
【问题描述】:

我需要将一个类映射到两个表(都具有多列主键)。假设 TABLE1 有 id1,id2,id3 并且 TABLE2 有 id1,id2 作为主键。现在在编写映射文件时,我会执行以下操作:

<hibernate-mapping package="beans">
  <class name="TABLE1Class" table="TABLE1">
    <composite-id name="table1PK" class="TABLE1PKClass">
        <key-many-to-one name="id1" class="ID1Class" column="id1"/>
        <key-many-to-one name="id2" class="ID2Class" column="id2"/>
        <key-many-to-one name="id3" class="ID3Class" column="id3"/>
    </composite-id>
    <property name="someProperty" type="integer" not-null="true" column="x"/>
    <join table="TABLE2">
        <key column="id1" />
        <!-- <key column="id2"/> The join tag accepts only one key tag!!! 
How do I map the second key??? -->
        <property name="propertyFromTable2" type="float" not-null="true"/>
    </join>
  </class>
</hibernate-mapping>

如您所见,join 标签只接受一个键标签!如何映射第二个 id?

亲切的问候,
暴君
P.S.:圣诞快乐,新年快乐,富有成效;)

【问题讨论】:

    标签: java hibernate join hibernate-mapping composite-primary-key


    【解决方案1】:

    &lt;key&gt; 可能包含多个&lt;column&gt; 元素:

    <key>
        <column name = "id1" />
        <column name = "id2" />
        <column name = "id3" />
    </key>
    

    【讨论】:

    • 嗨 axtavt,我按照您的指示解决了多重性问题,但是由于我在 TABLE2 (id1,id2) 中有两个 id,因此发生了另一个异常:“org.hibernate.MappingException:外键(FK:TABLE2 [id1,id2])) 的列数必须与引用的主键 (TABLE1 [id3])" 的列数相同。
    • 我尝试提供一个虚拟列,如此处所述forum.hibernate.org/… (),但我得到:“org.hibernate.MappingException: Foreign key (FK:TABLE2 [id1,id2,id3])) 的列数必须与引用的主键 (TABLE1 [id3])" 的列数相同。有什么建议吗?
    • @despot 嗨,好久不见,这个问题你解决了吗?如果是这样,你能告诉我怎么做吗?现在遇到同样的麻烦:)
    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    相关资源
    最近更新 更多