[英]Hibernate: find duplicates
假設我有以下Groovy類(或Java中的等價物)
class User {
Long id
String name
}
我想編寫一個Hibernate查詢(HQL或Criteria),它返回至少有一個具有相同名稱的其他用戶的所有用戶。
更新
建議使用以下查詢
select min(user.id), user.name
from User user
group by user.name
having count(user.name) > 1
但是,這有一些問題:
謝謝,唐
我會嘗試這樣的事情:
select min(user.id), user.name
from User user
group by user.name
having count(user.name) > 1
請注意,根據文檔 , 如果底層數據庫(即不在MySQL中)支持,則在having和order by子句中允許使用SQL函數和聚合函數。
編輯:應該可以檢索具有IN的用戶(我不認為查詢性能會非常好):
from User u
where u.name IN (
select user.name
from User user
group by user.name
having count(user.name) > 1)
String hql = "select columnName form entityName";
Query query = session.createQuery(hql);
arrayList = query.list();
int countOFRecords=Collections.frequency(arrayList , recordName)
我假設您正在尋找用戶名的精確字符串匹配。 此外,您還需要id上的主鍵,以便您可以判斷用戶是否具有相同的名稱,但實際上是另一個用戶。
您是否在User表上設置了主鍵? 聽起來你正在獲得重復,因為你正在搜索的字符串是主鍵。 Hibernate要求您將主鍵放在表/對象上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.