gpt4 book ai didi

java - hibernate :查找重复项

转载 作者:行者123 更新时间:2023-11-29 04:03:29 25 4
gpt4 key购买 nike

假设我有以下 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

但是,这有一些问题:

  • 它实际上并不返回 User 对象,只是返回他们的 id 和 name
  • 如果有 3 个同名用户,它只会返回其中一个的 id,而我想要所有 3 个
  • 它可能不适用于 MySQL,这是我正在使用的 RDBMS。

谢谢,唐

最佳答案

我会尝试这样的事情:

select min(user.id), user.name
from User user
group by user.name
having count(user.name) > 1

请注意,根据 the documentation , 如果底层数据库支持(即不在 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)

关于java - hibernate :查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1850015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com