【发布时间】:2010-07-19 11:13:22
【问题描述】:
我有一个关于 JPA 中的实体声明的简单问题。 我有一个带有 2 个外键的实体,它们不为空并形成一个 uniqueConstraint。一开始我在考虑一个复合键,由两个外键组成,但我听说这是一个遗留设计,而不是设计新表的推荐方式。
所以我很感兴趣 Hibernate/JPA 是否可以根据两个外键自动生成 id。假设我有以下实体:
@Entity
public class Foo {
@ManyToOne
private Bar bar;
private int i;
}
(我省略了 not null 和 uniqueConstraint 标签以使代码更具可读性)
我知道我可以简单地使用 GeneratedValue 添加一个 id 字段,并让我的数据库生成密钥(在我的示例 MySQL 中使用 auto_increment),但这对我来说似乎效率低下,因为它涉及查询数据库并要求它生成唯一的 id 值。
有没有一种方法可以根据“Bar”类的 id 和整数“i”的值生成一个非复合的 id(即 int 或 long 类型),因为它是这两个值已经形成唯一约束了吗?
【问题讨论】: