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

发布于 2025-01-09 13:16:56 字数 696 浏览 0 评论 0原文

我正在使用以下 HQL 查询:

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

It's causing the following error:

由以下原因引起:org.hibernate.query.QueryTypeMismatchException:查询 结果类型错误 - 多项选择:使用元组或数组 org.hibernate.query.sqm.internal.QuerySqmImpl.checkQueryReturnType(QuerySqmImpl.java:367) 在 org.hibernate.query.sqm.internal.QuerySqmImpl.visitQueryReturnType(QuerySqmImpl.java:328) 在 org.hibernate.query.sqm.internal.QuerySqmImpl。(QuerySqmImpl.java:227) 在 org.hibernate.internal.AbstractShare


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

I am using the following HQL query:

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

It's causing the following error:

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

what could be the reason for this?
Is it because I am selecting specific columns in it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

满天都是小星星 2025-01-16 13:16:56

您的 select 子句返回两个内容,因此该方法的类型签名应为 List。使用此版本:

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

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

Your select clause is returning two things, therefore the type signature of the method should be List<Object[]>. Use this version:

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

But note that you could also define an entity which matches the select clause. Then, you could avoid the cumbersome Object[] result set type.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文