[英]How to find duplicates in JPA?
我正在尝试在 CrudRepository 中创建一个方法,该方法能够在我的表中为我提供重复项。 我想找到一个同名且生日同一天的人。 为此,我认为它更容易,我想先找到所有相同的名字,然后我想过滤生日相同的名字。 Wished 方法是一个规范,但也可以进行查询。
JPA有办法吗?
完整表格:
ID Name Birthday
1 Jean 11.10.2019
2 Jones 10.10.2019
3 Jean 11.10.2019
4 Jean 12.10.2019
第一个希望的结果,用相同的名字过滤:
ID Name Birthday
1 Jean 11.10.2019
3 Jean 11.10.2019
4 Jean 12.10.2019
第二个希望的结果是:
ID Name Birthday
1 Jean 11.10.2019
3 Jean 11.10.2019
因为名字“Jean”在同一天生日。
有人可以帮忙吗?
您可以使用本机查询,如:
SELECT Name, Birthday, COUNT(*)
FROM Users
GROUP BY Name, Birthday
HAVING COUNT(*) > 1
这可以与JOIN
一起使用以获得所需的结果:
SELECT u.ID, u.Name, u.Birthday FROM Users u
JOIN (SELECT Name, Birthday, COUNT(*) FROM Users GROUP BY Name, Birthday HAVING COUNT(*) > 1) u2
ON u.Name=u2.Name AND u.Birthday=u2.Birthday
而没有INNER JOIN
的解决方案:
SELECT u.ID, u.Name, u.Birthday
FROM Users u, (SELECT Name, Birthday, COUNT(*) FROM Users GROUP BY Name, Birthday HAVING COUNT(*) > 1) u2
WHERE u.Name = u2.Name AND u.Birthday = u2.Birthday
使用 Spring JPA 标准
请参阅https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/ 中的示例
https://www.baeldung.com/spring-data-criteria-queries
因为您没有显示您的实体,因此,我无法更明确地实现编码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.