【问题标题】:Hibernate and select with join休眠并选择加入
【发布时间】:2017-02-19 22:46:09
【问题描述】:

我正在学习 Hibernate,但我遇到了加入问题。问题是,查询返回一个对象列表,我不知道我必须如何管理它

这是代码:

Query query = session.createQuery("select p.id, p.pokemon, t.types from Pokedex as p JOIN p.assPokTypes t where p.id = '001'");
List lista = query.list();

for(Object row:lista) {
   System.out.println(row);
}

这是表结构:
Pokedex(ID、口袋妖怪)
AssPokTypes (id_pokemon, id_type, primary_type)

谢谢

【问题讨论】:

  • 不一样,因为他在查询中只有一个Class/Table,我有更多Class/Table

标签: java hibernate


【解决方案1】:

实际上它返回一个对象数组而不是对象的列表

        List<Object[]> lista = query.list();

      for(Object[] row:lista) {
        System.out.println(row[0]);//Object of the first column
        System.out.println(row[1]);//Object of the second column
       }

【讨论】:

  • 不,是一个对象。如果我尝试应用您的代码,Eclipse 会给我这个错误“表达式的类型必须是数组类型,但它解析为对象”
  • 我的错误,我编辑了答案,对象数组是一个对象,所以它可以迭代它
  • 工作!! :) 因此,我有一个 Object[ ] 列表,它又是 Object[ ].. 对吗?
  • 是的,您会注意到,如果您使用的是 JPQL,即使您在这里不使用类型化查询,您也不会收到“未检查”警告,底层 JPA 层知道结果列表将是 Object 类型[]
【解决方案2】:

列表中的每个对象都是列。 行 [0] - p.id 行 [1] - p.pokemon …… 迭代列表并使用您需要的列。

Hibernate: How to get result from query with multiple classes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多