我有以下课程:
class A {
private B b;
// getters/setters
}
class B {
private C c;
private D d;
// getters/setters
}
class C {
private boolean outdated;
// getters/setters
}
class D {
// not important fields
// getters/setters
}
B类以“一对一”的关系连接到A,C和D。
我正在尝试使用条件api加入以下表格。
我有以下代码:
Root<A> root = query.from(A.class);
root.join(A_.b)
.join(B_.c)
.join(B_.d);
但遗憾的是,这段代码无法编译,我将在“.join(B_.d)”中获得错误,因为在使用C加入B之后我无法使用B字段进行加入。
我想要进行此类连接的原因是因为我需要具有实体C不会过时的条件(因此我将为其添加'on'条件)。
有人知道如何解决这个问题吗?
答案 0 :(得分:1)
root.join(A_.b).join(B_.c)
代表C
,因此无法加入"B_.d"
。你需要做
Root<A> root = query.from(A.class);
Join<A,B> bJoin = root.join(A_.b);
bJoin.join(B_.c);
bJoin.join(B_.d);