我想将JPA用于我的Java桌面应用程序的持久层,但我遇到的问题与JPA - Entity design problem
中描述的类似我没有找到上述问题的解决方案,这就是为什么我想要使用JPA的任何其他替代方案。
如果我得到上述问题的解决方案会更好。
答案 0 :(得分:6)
IMO处理此类问题的正确方法是使用生成的内部(通常为Long
)ID而不是自然主键 - 这可以消除整个问题。当然,这需要修改您的数据库架构。我在answer to the other post中添加了一个示例映射。
如果这是不可能的,并且推荐的解决方案对您不满意(顺便说一下为什么?),您可以尝试Hibernate,它提供了JPA功能的超集(尽管我无法提供Hibernate的解决方案)我的头脑 - 尤其是不知道你的问题与JPA解决方案有什么关系。)
答案 1 :(得分:1)
如果你让jpa为你的对象分配一个id(例如整数)作为主键,那么事情就会很好。您提到的示例中的复杂性仅仅是因为作者对主键的限制
答案 2 :(得分:0)
正如其他答案之一所说,生成“内部”(代理)密钥......又称“数据存储”身份。这是JDO规范的一部分(JPA仅支持应用程序标识,而JDO支持数据存储和应用程序标识)。