在构造函数中构造id?

时间:2019-01-29 00:30:41

标签: java spring-boot spring-data-jpa spring-data persistence

我有一个表,该表的ID由几个字段的组合构成。 id是名称,代码和dateOfProduce(具有特定格式)的组合。

@Data
@Entity
@Table(name="product")
public class Product{

    private String id;
    private String name;
    private String code;
    private Date dateOfProduce;

    final private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");

     public Product(String name, String code, Date dateOfProduce) {
        id = name + "-" + code + "-" + simpleDateFormat.format(dateOfProduce);
        this.name = name;
        this.code = code;
        this.dateOfProduce = dateOfProduce;
     }
}

构造函数中生成的id是否可以作为最佳实践?

1 个答案:

答案 0 :(得分:0)

这种做法的问题是,如果人们具有相同的名字,昵称和DOB,该怎么办?

ID通常是唯一的 id 标识符。理想情况下,应以没有两个冲突的方式生成它们。这可以很容易地做到。想象一下像“理查德”(Richard)这样的常见昵称,例如“迪克”。

您可以为此研究UUID类,甚至可以深入到snowflakes之类。还是自己动手。