Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate新手:我如何从这个列表中访问值?_Java_Hibernate_Orm - Fatal编程技术网

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中进行聚合可能是一个好主意