[英]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.