Java 使用复合键映射实体

Java 使用复合键映射实体,java,hibernate,annotations,Java,Hibernate,Annotations,我正在将一个遗留系统转换为使用hibernate(3.3.x版),而不是使用手工编制的SQL。我在将我的数据模型映射到组合键时遇到了一些问题。我已经创造了一个我认为有效的解决方案,但我并不太喜欢它。因此,我想看看下面的图表可以/应该如何映射,看看我是否在“正确”的轨道上 在图中,StuffTypes是一个非常静态的表,不会更改(没有插入或更新)。父表是当前唯一一个与DAO类关联的表(其他表应在创建父实例时持久化)。Stuff有一个StuffType和许多与之关联的SubStuff。最后,Sub

我正在将一个遗留系统转换为使用hibernate(3.3.x版),而不是使用手工编制的SQL。我在将我的数据模型映射到组合键时遇到了一些问题。我已经创造了一个我认为有效的解决方案,但我并不太喜欢它。因此,我想看看下面的图表可以/应该如何映射,看看我是否在“正确”的轨道上

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


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

将一个主键
stuff\u id
添加到stuff表,并将另一个主键
substuff\u id
添加到substuff则不那么复杂。当然,组合键是可能的。如果看到的解决方案中引入了@Embeddeble类来对复合键进行建模。

Hibernate参考是最好的选择。试试这个,。

就我个人而言,我经常参考JPA维基手册的章节。也请阅读。

您是在Subsuff中存储特殊的内容,还是在Subsuff中存储其他内容,而这些内容中不存在。如果不是这样的话,一个非常清晰/简单的设计就是在东西上有一个递归关系。然后,Stuff将包含-parentId、stuffTypeId、parentStuffId,并一起删除SubStuff表。