JPA和Hibernate中的@Id注解

8
如果我不想自动生成主键,而想使用表的第一列作为主键来提供ID。
2 A
4 B
7 D
13 E

我希望将表格的第1列,即2、4、7和13列作为主键。我该使用@Id注释吗?

@Entity
public class Code {
   @Id
   @Column(unique=true)
   private int id;

   ...
}

如果使用@Id,那么主键将始终自动生成,而不是使用第一列。

3
如果使用@Id注解,就不需要添加unique=true - v.ladynev
3个回答

4

@Id 只声明主键,不会插入生成的值。如果使用 @GeneratedValue,则会生成该字段的值。


1
主键通常应该自动生成吗? - user697911
因为在表中可能存在非自动生成的主键,所以请返回仅翻译文本,不要使用“,,”。 - stinepike
JPA会使用@Id注解来执行使用save()方法的更新操作吗? - Samuel Owino

0

对象ID(OID)是唯一标识对象的东西。在VM中,这通常是对象的指针。在关系型数据库表中,行通过其主键在其表中唯一标识。

对象持久化到数据库时,需要为对象分配一个唯一标识符,这使您可以查询对象,定义与对象关系,以及更新和删除对象。在JPA中,对象ID通过@Id注释定义,并应对应于对象表的主键

对象ID可以是自然ID或生成的ID。自然ID是出现在对象中并在应用程序中具有某些含义的ID。自然ID的示例包括电子邮件地址、电话号码和社会保险号码。生成的ID(也称为代理ID)是由系统生成的ID。

在JPA中,可以通过@GeneratedValue注释轻松地为@Id分配生成的序列号。

0
如果您始终手动为实体提供主键值,则@Id注释就足够了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接