从多个表中获取列时,本机Sql中的Hibernate问题?

时间:2012-12-06 14:48:00

标签: hibernate java-ee hql

假设有两张桌子。表A和表B.

表A有{id,name,desc} 表B有{id,name,place}

我正在尝试显示名称,id列,其中a.id等于b.id。

Hibernate没有正确显示记录。

有人可以帮我解决问题吗?

谢谢, 卡锡尔

2 个答案:

答案 0 :(得分:1)

你可以这样写这种类型的查询:

 Query qry = session.createQuery("select a.name, a.id from A a, B b where a.id = b.id");
 List l = qry.list();
 Iterator it = l.iterator();
 while(it.hasNext())
 {
     Object o[] = (Object o[])it.next();
     System.out.println("name = "+o[0]+" id = "+o[0]);

 }

在这种情况下,hibernate在内部将每行的多个列值存储到一个对象数组中,并将这些对象数组存储到List集合中。在迭代集合时,我们需要将结果类型转换为对象数组。

干杯和快乐的编码!

答案 1 :(得分:0)

您可能只需要为表格设置别名。

select a.name, a.id from A a join B b on a.id = b.id