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
?
如何解决?
我想在我的列表页面显示组织,但是数据有误。
不确定这种行为,但你能试试这些吗,
- 给
org_name
一个别名。
- 删除
String.format
。并首先尝试打印 objs[1]
和 objs[2]
并检查正在打印的内容。
我用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
?
如何解决?
我想在我的列表页面显示组织,但是数据有误。
不确定这种行为,但你能试试这些吗,
- 给
org_name
一个别名。 - 删除
String.format
。并首先尝试打印objs[1]
和objs[2]
并检查正在打印的内容。