我的实体设置如下:
文档<1:n-分支<1:n-子分支
建模为这样的集合:
class Document {
...
@OneToMany(
cascade = {CascadeType.ALL},
fetch = FetchType.LAZY,
orphanRemoval = true)
@JoinColumn(name = "document_id")
Set<Branch> branches = new HashSet<>();
}
class Branch {
...
@OneToMany(
cascade = {CascadeType.ALL},
fetch = FetchType.LAZY,
orphanRemoval = true)
@JoinColumn(name = "branch_id")
Set<SubBranch> subBranches = new HashSet<>();
}
class SubBranch {
...
String someProperty;
}
在queryDSL中,当查找这样的文档时,我知道如何一次选择获取分支:
queryFactory.select(QDocument.document)
.from(QDocument.document)
.where(QDocument.document.someParam.eq(someValue))
.leftJoin(QDocument.document.branches, QBranch.branch).fetchJoin()
.fetchOne();
但是我不知道如何获取子分支。
join(QBranch.subBranches, QSubBranch.subBranch).fetchJoin() //gives a Nullpointer in Branch::HashCode
join(QDocument.document.branches.any().subBranches, QSubBranch.subBranch) // unexpected token 'any' in query string