使用复合键映射实体

时间:2010-10-08 06:38:05

标签: java hibernate annotations

我正在努力将遗留系统转换为使用hibernate(版本3.3.x)而不是使用手工制作的SQL。我遇到了一些映射我的数据模型的问题,这些问题与复合键相关。我已经创建了一个我认为有效的解决方案,但我并不过分喜欢它。因此,我想看看下图是如何/应该映射的,看看我是否在“正确”的轨道上。

alt text

在图中,StuffTypes是一个非常静态的表,不会更改(没有插入或更新)。 Parent是当前具有与之关联的DAO类的唯一表(其他表应在父实例存在时保留)。 Stuff有一个StuffType和一些与之关联的SubStuff。最后,SubStuff只是Stuff和StuffTypes之间的多对多映射表。

使用注释将这些实体映射到Java对象的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

就个人而言,我经常参考JPA Wiki Book的3.2 Primary Keys through -ToOne Relationships部分。另请阅读3.1 Composite Primary Keys

答案 1 :(得分:0)

将主键stuff_id添加到Stuff表中,将另一个主键substuff_id添加到SubStuff则不那么复杂。当然,复合键是可能的。如果看到解决方案,其中引入了@Embeddable类来为复合键建模。

答案 2 :(得分:0)

Hibernate Reference是你最好的选择。试试这个,Mapping Entities with Composite Keys