id的数据类型应该是什么



好的,所以我有一个实体类Person:

@Table(name = "person")
public class Person {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;    // -------> Integer or int??                                
@Column(name = "managerID")
private  int managerID;
@Column(name = "name")
private  String name;
@Column(name = "externalID")
private  UUID externalID;

public Person(long managerID, String name) {
this.managerID = managerID;
this.name = name;
this.externalID = UUID.randomUUID();;
}
}

理想情况下,实体id的数据类型应该是什么,我使用的是SQL(RDBMS(。它应该是int还是Integer?id Integer,int会引发什么问题?

虽然基元类型int可以工作,但您应该使用对象类型Integer来避免在使用任何jpa存储库实现时出现问题。以下是您可能面临的一个问题始终使用JPA@Id的基元对象包装器而不是基元类型?

只需使用基元int类型。当字段自动递增时,不应该出现该字段为null的情况。如果它丢失,则不能使用SELECT ... WHERE id = ...引用具有其id的行,因此不是有效记录。

尽管在创建id时没有默认值,基元类型可能是一个问题,但由于您对其进行了自动递增,因此它不会出现在列中。因此,如果某个内容具有默认值或行为,请使其不可为null;如果它没有默认值或行为,则使其可以为null

最新更新