Java Hibernate新手:我如何从这个列表中访问值?
我有这个类的映射Java Hibernate新手:我如何从这个列表中访问值?,java,hibernate,orm,Java,Hibernate,Orm,我有这个类的映射 @Entity @Table(name = "USERS") public class User { private long id; private String userName; } 我提出一个问题: Query query = session.createQuery("select id, userName, count(userName) from User order by count(userName) desc"); return
@Entity
@Table(name = "USERS")
public class User {
private long id;
private String userName;
}
我提出一个问题:
Query query = session.createQuery("select id, userName, count(userName) from User order by count(userName) desc");
return query.list();
如何访问查询返回的值
我的意思是,我应该如何处理query.list()?作为用户还是什么?严格地回答您的问题,在select子句中指定类属性的查询(可选地调用聚合函数)返回“标量”结果,即
对象[]
(或列表
)。看
但您当前的查询不起作用。您将需要以下内容:
select u.userName, count(u.userName)
from User2633514 u
group by u.userName
order by count(u.userName) desc
我不确定Hibernate如何处理聚合和计数,但我不确定您的查询是否能够正常工作。您试图选择一个聚合(即“count(userName)”),但您没有userName的“groupby”子句 如果查询确实有效,并且Hibernate能够找出如何处理它,那么返回的结果很可能是一个原始对象[],因为Hibernate无法将“count(userName)”数据映射到映射对象上的任何字段中 总的来说,当您开始在查询中使用聚合时,Hibernate可能会变得有点棘手,因为您不再将表/列直接映射到类/字段中。从他们的文档中进一步了解如何在Hibernate中进行聚合可能是一个好主意