小编典典

JPA实体ID-long或Long

hibernate

您实体的ID是 (原始类型)还是 (对象类型)?

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

选择什么? 长还是长?

@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() {
    }

阅读 1025

收藏
2020-06-20

共1个答案

小编典典

我认为使用Long更好,因为通过检查该null值来检查实体是否具有持久身份是更正确的(在MySQL中,您可以将ID设置为0)。另外,像Spring这样的某些库在其逻辑中也基于Long类型的ID(默认情况下)。有关示例,请参见此实现

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

PS:根据JPA规范,两者都是正确且受支持的,并且此问题的答案以某种方式基于观点。

2020-06-20