尝试做一些更复杂的查询,并认为HQL会更好地完成工作。使用nHibernate。
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(?),但不确定如何以这种方式加载我的对象。
答案 0 :(得分:1)
这取决于您的实体是什么以及您关心的主要对象是什么。你似乎把它们全部拉出来而不仅仅是一个实体。我将假设Group是此示例中的实体
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 '?%'
这应该让你开始。但是在不知道你的结构的情况下,我正在黑暗中拍摄。
答案 1 :(得分: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 '?%'