2013-08-14 8 views
1

Я хотел бы написать один запрос HQL, который возвращает определенный счет из 4 таблиц в разных столбцах.Hibernate count from multi tables

У меня есть 4 таблицы: Tab1, Tab2, Tab3 и Tab4, и я хотел бы получить что-то вроде этого:

|Tab1 | Tab2 | Tab3 | Tab4 | 
|..1....|..13...|...7...|....0...| 

Все записи в Tab# с имеют свои собственные id и ObjectID и ObjectFetch колонны

Я пробовал что-то вроде этого:

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 

Но это вообще не работает, любая идея почему?

+0

Какую базу вы используете? – Crferreira

+0

MS SQL Express, но это важно? – Arek

+0

Ну, предложите использовать собственный запрос для решения вашей проблемы, если у вас нет ответов на основе HQL. – Crferreira

ответ

2

Я нашел решение, просто нет необходимости использовать все таблицы после FROM мы можем использовать только 1, это просто для правильного синтаксиса, а также мы можем использовать virtualTable, поэтому право 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 

и все это нормально :) thx.