java Hibernate具有不同列数的多对一映射
嗨,我有两张桌子如下
表1:
+-------------------+ | ID LOB col1 col2 | +-------------------+
主键(ID和LOB)
表2:
+-----------------+ | SK ID col3 col4 | +-----------------+
主键(SK)
我需要给出从表2到表1的多对一关系,因为表1有复合主键(ID和LOB),但表2没有任何与LOB相关的列。我无法提供映射。 请帮忙
编辑我尝试了表2的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>
上述方法不起作用。在获取记录时,它尝试从表2中获取LOB代码,而表1中根本不存在LOB代码
# 1 楼答案
Hibernate
@Id
不必与真正的数据库主键对应(当然,尽管它们需要匹配)如果
ID
是Table1
中的唯一列,则只将Hibernate id映射到它,并将LOB
保留为普通字段如果
ID
不是唯一的列,那么多对一无论如何都不能正常工作,因为引用的表中会有多个匹配的行# 2 楼答案
假设
table2.SK
是到table1.ID
的FK,并且没有具有相同ID的table1
条目,则可以按如下方式编写映射:如果有更多的
table1
行具有相同的ID,则映射将失败,因为一个子级将与多个父级匹配因此,为了获得适当的
many-to-one
关联,您需要一个FK来连接一个唯一的父列# 3 楼答案