是否可以在hql的子查询中选择多个列?
我想将以下mysql查询转换为hql
select u.name, sub.cnt from user u
inner join (select user_id, count(user_id) cnt from user_log group by user_id order by cnt desc limit 5) sub
on u.id = sub.user_id;
但是在hql中,我知道只能在where子句中使用子查询
答案 0 :(得分:0)
我不知道纯粹的Hibernate解决方案。我在博客文章中谈到了这一点。
但是您可以考虑使用FluentJPA解决方案:
SELECT t0.name, q0.count
FROM USER t0 INNER JOIN (SELECT t1.user_id, COUNT(t1.user_id) AS count
FROM USER_LOG t1
ORDER BY COUNT(t1.user_id) DESC
LIMIT 5 ) q0 ON (t0.id = q0.user_id)
产生以下SQL:
@Entity
@Getter
@Table(name = "USER")
class User {
private Long id;
private String name;
}
@Entity
@Getter
@Table(name = "USER_LOG")
class UserLog {
private Long userId;
}
@Tuple
@Getter
class UserIdCount {
private Long userId;
private int count;
}
@Tuple
@Data
class UserNameCount {
private int count;
private String name;
}
我使用的实体(用龙目岛声明):
class Decoder {
public:
virtual void run() {}
//...
}