2010-04-02 69 views
1

我想使用JPA我的Java桌面应用程序的我的持久层,但我也有类似的问题,如描述在JPA - Entity design problem替代JPA

我没有找到一个解决上述那样的问题,这就是为什么我想要与JPA的其他选择一起使用。

如果我得到上述问题的解决方案会更好。

+0

我投票结束这个问题作为重复,因为我看不到在目前的状态与http://stackoverflow.com/questions/2562746/jpa-entity-design-problem/有任何区别。 – 2010-04-02 08:38:01

回答

6

IMO处理此类问题的正确方法是使用生成的内部(通常为Long)ID而不是自然主键 - 这消除了整个问题。当然,这需要修改您的数据库模式。我在我的answer to the other post中包含了一个示例映射。你可能会尝试Hibernate,它提供了JPA功能的超集(虽然我无法提供Hibernate的解决方案),但是,如果这不可行,并且所提到的解决方案不适合您(btw为什么?我的头顶 - 特别是不知道你的问题与JPA解决方案)。

1

如果你让jpa为你的对象分配一个id(例如整数)作为主键的话,事情会变得非常漂亮。你提到的例子中的复杂性只是因为作者对主键的限制

0

正如其他答案所述,生成一个“内部”(代理)键......又名“数据存储”标识。这是JDO规范的一部分(JPA仅支持应用程序标识,而JDO支持数据存储和应用程序标识)。