使用 group by 子句执行 HQL 时出错

Error while executing HQL with group by clause

我正在使用以下 HQL 查询:

 List<Object> object = session.createQuery("select userId, count(*) from Tweet " +
                "group by userId", Object.class).getResultList();

它导致了以下错误:

Caused by: org.hibernate.query.QueryTypeMismatchException: Query result-type error - multiple selections: use Tuple or array at org.hibernate.query.sqm.internal.QuerySqmImpl.checkQueryReturnType(QuerySqmImpl.java:367) at org.hibernate.query.sqm.internal.QuerySqmImpl.visitQueryReturnType(QuerySqmImpl.java:328) at org.hibernate.query.sqm.internal.QuerySqmImpl.(QuerySqmImpl.java:227) at org.hibernate.internal.AbstractShare


这可能是什么原因? 是因为我在其中选择了特定的列吗?

你的 select 子句返回两个东西,因此方法的类型签名应该是 List<Object[]>。使用此版本:

List<Object[]> object = session.createQuery("select userId, count(*) from Tweet " +
            "group by userId", Object[].class).getResultList();

但请注意,您还可以定义一个与 select 子句匹配的实体。然后,您可以避免繁琐的 Object[] 结果集类型。