java - Hibernate SQLQuery 列表方法返回对象而不是对象数组

标签 java hibernate hql

我对 Hibernate SQLQuery.list() 方法有这种奇怪的行为。

问题描述如下:

我有一个 sql 选择查询,它只从数据库中检索单个列(组)(即,select group from peopleGroup where groupid = 10) 我在对象数组列表中收到上述列表的结果
即,

SQLQuery hQuery = session.createSQLQuery("select group from peopleGroup where groupid = 10");
List<Object[]> result = (List<Object[]>)hQuery.list();

理想情况下,结果应包含对象数组列表,但当我检查时,结果的第 0 个索引包含字符串对象而不是对象数组。
但是,如果我使用多个列,假设查询的 select 子句中有 2 列,我能够看到结果的第 0 个索引作为对象数组,即 Object[2]={"group", "groupid"};

即使在查询的 select 子句中只提到一列,我如何获取对象数组?

最佳答案

Docs状态:

List list()

Return the query results as a List. If the query contains multiple results per row, the results are returned in an instance of Object[].

自己转换,像这样。

List<Object[]> l = new ArrayList<>();
for(Object o : query.list()) {
  Object[] arr = {o};
  l.add(arr);
}

关于java - Hibernate SQLQuery 列表方法返回对象而不是对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45584185/

相关文章:

java - Hibernate 一对多和多对一关系

hibernate - 缓存 spring/hibernate webapp

intellij-idea - IntelliJ IDEA 不理解 Hibernate 查询语言 (HQL)

java - HQL:处理特殊字符

java - Firebase - 在唯一键下获取子值

java - 如何使用 Maven - intellij IDEA 在纯 java 项目中尝试 Dagger 2

java - 如何在 Spring Boot 中将属性注入(inject)到测试类中?

java - 在测试用例中覆盖 hibernate sessionfactory 的数据源

mysql - 使用 Hibernate HQL 的嵌套查询

java - 运行应用程序后 RecyclerView 列表不显示任何内容