Hibernate从多个表中计算数量

3
我希望写一个单独的HQL查询,以不同列的形式从4个表中返回特定计数。我有4个表:Tab1、Tab2、Tab3和Tab4,我想要得到这样的结果:
|Tab1   | Tab2  | Tab3  | Tab4   |
|..1....|..13...|...7...|....0...|

Tab#中的所有记录都有它们自己的idObjectIDObjectFetch列。

我尝试过这样的方法:

select DISTINCT
(select count(*) from Tab1 where ObjectFetch=:fetch and ObjectID=:id),
(select count(*) from Tab2 where ObjectFetch=:fetch and ObjectID=:id),
(select count(*) from Tab3 where ObjectFetch=:fetch and ObjectID=:id),
(select count(*) from Tab4 where ObjectFetch=:fetch and ObjectID=:id),
from Tab1, Tab2, Tab3, Tab4

但它根本不起作用,有什么想法为什么吗?

你在使用哪个数据库? - Crferreira
MS SQL Express,但这重要吗? - Arek
如果你没有HQL的解决方案,我建议你使用本地查询来解决问题。 - Crferreira
谢谢,我明白了。但是如果将来我遇到类似的问题,答案是基于HQL的话,那会是一个很好的例子。再次感谢,但如果你或其他人知道类似这种情况的HQL语句,那会帮助我很多。 - Arek
1个回答

4

我找到了一个解决方案,其实在FROM之后我们并不需要使用所有的表格,只需要使用一个就可以了,这样可以保证正确的语法。同时,我们还可以使用虚拟表格,因此正确的HQL如下:

select DISTINCT
(select count(*) from Tab1 where ObjectFetch=:fetch and ObjectID=:id),
(select count(*) from Tab2 where ObjectFetch=:fetch and ObjectID=:id),
(select count(*) from Tab3 where ObjectFetch=:fetch and ObjectID=:id),
(select count(*) from Tab4 where ObjectFetch=:fetch and ObjectID=:id)
from Tab1

一切都很好 :) 谢谢。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接