2009-09-10 3 views
0

Попытка сделать несколько более сложный запрос и подумала, что HQL будет лучше для работы. Использование nHibernate.Что такое эквивалент HQL этого SQL

SELECT * FROM [Group] g 
    INNER JOIN [User2Group] ug on g.Id = ug.GroupId 
    INNER JOIN [User] u ON u.Id = ug.UserId 
    INNER JOIN Activity a on g.ActivityId = a.Id 
WHERE u.Id = ? AND a.Lineage LIKE '?%' 

Я предполагаю, что я мог бы также просто использовать SQL, а также (?), Но не уверен, что на самом деле, как загружать мои объекты таким образом.

ответ

1

Это будет зависеть от того, что представляют собой ваши сущности и каков основной объект, о котором вы заботитесь. Кажется, вы тянете их всех, а не только одну сущность. Я собираюсь предположить, что Группа является юридическим лицом из этого примера

from MyApp.Entities.Group as g 
join fetch g.Users as u 
join fetch g.Activity as a 
where u.Id = :userId and a.Lineage like '?%' 

Это должно заставить вас начать. Но, зная вашу структуру, я делаю выстрел в темноте.

+0

Извините, вы правы, я пытаюсь получить коллекцию групп. – rball

+0

Я думаю, что ты довольно близко, я дам ему шанс и вернусь с тобой. Спасибо за ответ. – rball

+0

Поставил меня туда, где мне нужно. Что я закончил тем, что использовал: var groups = repository.SimpleQuery («from group as g join fetch g.Users as u join fetch g. Активность как где u.Id =? И a.Lineage like?», CurrentUser.Id , string.Format ("{0}%", lineage)); – rball

0

Если у вас есть соединение «много-ко-многим» (таблица User2Group), вы должны начать с него и сделать все соединения в этой таблице. Если у вас есть правильные сопоставления, запрос ниже будет работать как шарм.

from User2Group as ug 
join ug.User as u 
join ug.Group as g 
where u.Id = :userId and g.Activity.Lineage like '?%' 
+0

У меня есть [HasAndBelongsToMany (TYPEOF (Group), таблица = "User2Group", ColumnKey = "USERID", ColumnRef = "GroupID")] \t \t публичных виртуальных IList Группы и аналогичные от пользователя к группе многие ко многим. Сначала я начал с чего-то подобного, но мой конечный результат должен быть набором групп. – rball

Смежные вопросы