使用 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[]
结果集类型。
我正在使用以下 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[]
结果集类型。