Hibernate多对一映射具有不同的列数

Siv*_*iva 10 java database orm hibernate hibernate-mapping

嗨我有2张桌子如下

表格1:


    +-------------------+
    | ID  LOB col1 col2 |
    +-------------------+

主键(ID和LOB)

表2:


    +-----------------+
    | SK ID col3 col4 |
    +-----------------+

主键(SK)

需要从表2到table1给出多对一的关系,因为table1具有compositePrimaryKey(ID和LOB),table2没有任何与LOB相关的列.我无法提供映射.请帮忙.

编辑我已经尝试了Table2的hibernate映射:

<many-to-one name="class1Obj" class="com.acs.enterprise.common.Class1" 
            lazy="proxy" insert="false" update="false">
    <column name="ID" />
    <column name="LOB" />
</many-to-one>
Run Code Online (Sandbox Code Playgroud)

以上不起作用.在获取记录时,它尝试从table2获取LOB代码,这在表1中根本不存在

Vla*_*cea 1

假设table2.SK是一个 FKtable1.ID并且不存在table1具有相同 ID 的条目,您可以按如下方式编写映射:

@ManyToOne
@JoinColumn(name = "ID", insertable = false, updatable = false)
private Class1 class1Obj;
Run Code Online (Sandbox Code Playgroud)

如果有更多table1行具有相同的 ID,则映射将失败,因为子级将与多个父级匹配。

因此,为了实现正确的many-to-one关联,您需要一个到唯一父列的 FK。