JPA 获取一列两次

JPA fetch one column twice

我用JPA/Hibernate3MySql

msyql:

+--------+----------+-----------+
| org_id | org_name | parent_id |
+--------+----------+-----------+
| dept1  | dev      | -1        |
| dept2  | system   | dept1     |
| detp3  | service  | dept2     |
+--------+----------+-----------+

java

String sql = "select "
               + "    t01.org_id,   "
               + "    t01.org_name, "
               + "    t02.org_name as parent_name "
               + "from s_organization t01 left join s_organization t02 "
               + "                               on t01.parent_id = t02.org_id ";  
    List<Object[]> list= em.createNativeQuery(sql).getResultList();
    for(Object[] objs : list) {
        System.out.println(String.format("org_name:[%8s] parent_name:[%8s]", 
                objs[1], objs[2]));
    }

结果:

 org_name:[     dev] parent_name:[     dev]
 org_name:[  system] parent_name:[  system]
 org_name:[ service] parent_name:[ service]

为什么 org_name 等于 parent_name? 如何解决?

我想在我的列表页面显示组织,但是数据有误。

不确定这种行为,但你能试试这些吗,

  1. org_name 一个别名。
  2. 删除String.format。并首先尝试打印 objs[1]objs[2] 并检查正在打印的内容。