Hibernate 两个表主键作为第三个表的主键

Hibernate 两个表主键作为第三个表的主键,hibernate,Hibernate,我是冬眠新手。我有两张桌子如下 Table1{id1 primary key;} Table2{id2 primary key;} 表1和表2之间存在一对多关系。实现了这种关系,没有问题。我们还有第三张表,如下所示 Table3{(id1 & id2) primary key, col3 ,col4} 从Google获得了一个解决方案,可在第三个表映射中使用 <composite-id> <key-property name="id1" column=

我是冬眠新手。我有两张桌子如下

Table1{id1 primary key;}

Table2{id2 primary key;}
表1和表2之间存在一对多关系。实现了这种关系,没有问题。我们还有第三张表,如下所示

Table3{(id1 & id2) primary key,  col3 ,col4}
从Google获得了一个解决方案,可在第三个表映射中使用

<composite-id>
     <key-property name="id1" column="id1" />
     <key-property name="id2" column="id2"/>
</composite-id>

如果有更好/更高级的方法在hibernate中实现同样的功能,请建议/指导我。还建议保存和检索对象的更好方法


提前感谢。

我建议反对这种设计;主键应始终为单列技术键(即没有任何类型的业务关系)

在我的模式中,我这样建模:

Table3( id primary key, table1fk foreign key, table2fk foreign key, col1, col2, ... )
优点:

  • 所有桌子的设计都相同
  • 使用外键可确保不会意外删除
    Table1
    Table2
  • 清晰的关注点分离:PK用于定位和标识行。外键的意思是:我指的是另一个表。您的设计混合了这两者

Hi Aaron,这里的一个挑战是,我们希望确保在第三个表中的任何时候,id1和id2组合只存在一行。如果我们采用您的设计……是否有可能在不太复杂的情况下实现这一点?。