背景:
需求上线,第二天出现问题,运维找我说,生成的数据重复,但是数量确是对的
原因:
经过排查发现是@Id这个注解造成的原因
分析:
注解意思:
@Id 标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。
jpa查询的行为:
jpa框架底层有一个操作是先对@ID的字段进行查询,再查询行数据
那么查询回来的值不重复时没有问题,一旦有重复则出现问题,后面的数据被前面的覆盖
修改方案:
把@ID加在唯一主键上,或其他能保证唯一的字段上