最近在做批处理数据时,由于数据源出现表无主键的情况,导致查询出来的的数据重复

  • JPA查询时实体必须要有主键,于是随意指定了字段设置了@ID

数据展示

原始数据

name sex
王五 0
王五 1
王五 2
王五 0
测试 0
真实 0
测试 1
测试 1
张三 0

查询数据

  1. [
  2. {
  3. "name": "王五",
  4. "sex": 0
  5. },
  6. {
  7. "name": "王五",
  8. "sex": 0
  9. },
  10. {
  11. "name": "王五",
  12. "sex": 0
  13. },
  14. {
  15. "name": "王五",
  16. "sex": 0
  17. },
  18. {
  19. "name": "测试",
  20. "sex": 0
  21. },
  22. {
  23. "name": "真实",
  24. "sex": 0
  25. },
  26. {
  27. "name": "测试",
  28. "sex": 0
  29. },
  30. {
  31. "name": "测试",
  32. "sex": 0
  33. },
  34. {
  35. "name": "张三",
  36. "sex": 0
  37. }
  38. ]

JPA

dao

  1. /**
  2. * 测试无主键下的查询
  3. *
  4. * @author tn
  5. * @version 1
  6. * @date 2021-06-26 13:01
  7. */
  8. public interface JpaIdDao extends JpaRepository<JpaIdBean,String> {
  9. }

entity

  1. /**
  2. * 测试没有主键的情况下使用jpa查询
  3. *
  4. * @author tn
  5. * @version 1
  6. * @date 2021-06-26 12:58
  7. */
  8. @Table(name = "jpa_id")
  9. @Entity
  10. @Data
  11. public class JpaIdBean {
  12. // 由于必须要有个主键,就随便用了个
  13. @Id
  14. private String name;
  15. private Integer sex;
  16. }

问题调试