我有一个如下所示的对象图:
class A ()
{
int id;
IEnumerable<B> bees;
}
class B()
{
int id;
A a;
C c;
}
class C()
{
int id;
D d;
IEnumerable<B> bees;
}
class D()
{
int id;
IEnumerable<C> cees
}
构建查询的合理方法是什么:
会返回A类型的列表,其中包含带有特定ID的链中的D?
我正在使用NH3,因此可以使用任何查询技术。我尝试了几种不同的方法,但在每种情况下都看似死路一条。我有一个在内存集合中使用的解决方案 - 但显然这不太理想,我希望在数据库服务器上完成工作。
答案 0 :(得分:3)
select distinct a from A a
inner join a.bees b
inner join b.c c
where c.d.id = :theSearchDId
假设所有关联都是双向关联,而不是不相关的关联(即A.bees是B.a等的反向关联)。