我遇到了一些 SO 讨论和其他帖子(例如here,here和here),其中使用复合主键与 JPA 被描述为可能的情况下要避免的事情,或者由于遗留数据库或具有“毛茸茸的”角落案例而被描述为必需品。由于我们从头开始设计一个新的数据库并且没有任何遗留问题需要考虑,建议或者说更安全,避免使用 JPA ( Hibernate 的复合主键strong>或 EclipseLink ?)。
我自己的感觉是,因为 JPA 引擎足够复杂,当然,就像所有软件一样,并非没有错误,最好是遭受非规范化的表而不是忍受反对的恐惧与复合主键相关的错误(基本原理是数字单列主键和外键是JPA引擎支持的最简单的用例,因此它应该尽可能没有错误。)
答案 0 :(得分:8)
我尝试过这两种方法,我个人更喜欢避免使用复合主键,原因如下:
但它带来了一些不好的部分: