Java 如何使用hibernate查询语言从oneToMany表中获取最大值

Java 如何使用hibernate查询语言从oneToMany表中获取最大值,java,hibernate,join,max,hql,Java,Hibernate,Join,Max,Hql,下面是我的schemma结构 sub_roles id name role_id parent_id roles id name user_id last_updated user id name type 我想根据父id获取最近修改的角色信息的用户 我编写了下面的查询,以根据parent_id获取用户,如下所示 select sr.role.user, sr.parent, sr.role from SubRole sr where sr.parent.id in (:parentIds

下面是我的schemma结构

sub_roles
id
name
role_id
parent_id

roles
id
name
user_id
last_updated

user
id
name
type
我想根据父id获取最近修改的角色信息的用户

我编写了下面的查询,以根据parent_id获取用户,如下所示

select sr.role.user, sr.parent, sr.role from SubRole sr where sr.parent.id in (:parentIds)
我想获取最近更新的用户角色。如何通过修改上述查询来实现这一点

select user.id as id, SUBSTRING_INDEX( GROUP_CONCAT(CAST(user.name AS CHAR) ORDER BY rl.last_updated desc), ',', 1 ) as name, SUBSTRING_INDEX( GROUP_CONCAT(CAST(user.type AS CHAR) ORDER BY rl.last_updated desc), ',', 1 ) as type from sub_roles srl INNER JOIN roles rl on srl.role_id = rl.id INNER JOIN user on rl.user_id = user.id where parent_id in (:parentIds) group by user.id;
注意:未经测试

像这样试试

select sr.parent, sr.role, u from SubRole sr JOIN sr.role.user u WHERE sr.parent.id IN (:parentIds)

sub_角色具有外键role_id。parent_id代表什么?parent_id引用对子角色进行分组的表。我希望根据查询结尾处的parent_idadd'limit 1'获取用户最近更新的单个角色。在结尾处添加limit 1返回单个结果。但我的意图是返回父级下每个用户的最新角色。例如user1=>latest role 1、user2=>latest role 2等,编辑:立即检查答案。