背景:

需求上线,第二天出现问题,运维找我说,生成的数据重复,但是数量确是对的

原因:

经过排查发现是@Id这个注解造成的原因

分析:

注解意思:

@Id 标注用于声明一个实体类的属性映射为数据库的主键列。该属性通常置于属性声明语句之前,可与声明语句同行,也可写在单独行上。 

jpa查询的行为:

jpa框架底层有一个操作是先对@ID的字段进行查询,再查询行数据

那么查询回来的值不重复时没有问题,一旦有重复则出现问题,后面的数据被前面的覆盖

修改方案:

把@ID加在唯一主键上,或其他能保证唯一的字段上

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐