Java使用多个表迭代HQL结果

时间:2014-05-28 06:48:44

标签: java hibernate iterator hql criteria

说,使用hql,我从四个表中选择(t1,t2,t3,t4)

这就是我的hql的样子:

String multiTableHql = "from tbl1, tbl2, tbl3, tbl4"; // omitting  filtering
Query mtq = myDao.getInstance().getSession().createQuery(multiTableHql);

现在,我的理解是,调用 mtq.list()显然会带来一个对象列表,其中每个对象的属性都是那些表。

我如何迭代该列表,以便我可以单独获取每个表?

我已经尝试过 Iterator,ArrayList 但显然没有成功。可能是我做错了。

请建议我这样做的正确方法。提前谢谢。

1 个答案:

答案 0 :(得分:1)

您的此查询实际上是笛卡尔积。因此,如果所有表格都有1000行,您将得到1000 * 1000 * 1000 * 1000 = 1万亿个结果。

如果我们谈论ToOne关联,最好用SQL或HQL加入它们(如果你有从t1到t2到t3到t4的可导航映射)。

如果这些是ToMany协会,加入你将获得一个笛卡尔积,在这种情况下,4个不同的选择将获得4 * 1000结果(优于1万亿)。