繁体   English   中英

id的数据类型应该是什么?

[英]What should be the data type of for id?

好的,所以我有一个实体 class 人:

@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类型。 当它自动递增时,绝不应该出现该字段为 null 的情况。 如果它丢失,则不能使用SELECT... WHERE id =...引用具有其 ID 的行,因此不是有效记录。

尽管原始类型可能是在没有默认值的情况下创建id的问题,但它不会发生在您的列中,因为您会自动递增它。 因此,如果某物具有默认值或行为,则使其不可为空; 如果它没有默认值或行为,则使其可为空。

虽然原始类型int可以工作,但您应该使用 Object 类型Integer以避免在使用任何 jpa 存储库实现时出现问题。 这是您可能面临的问题之一始终使用原始 object 包装器为 JPA @Id 而不是原始类型?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM