我有一个对象图,看起来像这样:
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,所以可以使用任何查询技术。我尝试了几种不同的方法,但每种方法似乎都陷入了死胡同。我有一个解决方案,在内存集合工作-但显然这是不理想的,我希望在DB服务器上完成的工作。
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 .的逆关联,等等)。