JPA实体ID-基元或对象类型(LONG或LONG)

人气:964 发布:2022-10-16 标签: types entity jpa hibernate long-integer

问题描述

您的实体的ID应该是long(基元类型)还是long(对象类型)?

该ID是我的表的主键,并且在数据库中从不为"null"。 我的同事建议使用长对象类型。 默认情况下,Hibernate反向工程工具为id生成一个基元类型Long。

选择什么?长还是长?

@Entity
@Table(name = "COUNTRY")
public class CountryEntity implements java.io.Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @Column(name = "ID")
    private long id;
    @Column(name = "NAME")
    private String name;
    @Column(name = "CURRENCY")
    private String currency;
    @Column(name = "PEOPLE")
    private Long people;
    @Column(name = "SIZE")
    private Long size;

    public CountryEntity() {
    }

推荐答案

我认为有Long更好,因为通过检查null值(在mysql中,ID值可以是0)来检查实体是否具有持久性标识更正确。还有一些库,比如Spring,在它们的逻辑中基于(D)类型为long(缺省情况下)的ID。有关示例,请参阅此implementation。

原语的小优势:它占用的空间更少。

PS:根据JPA规范,两者都是正确的&;并且对此问题的回答在某种程度上是基于意见的。

668