深度获取QueryDSL

时间:2018-07-09 08:20:41

标签: hibernate querydsl

我的实体设置如下:

文档<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

0 个答案:

没有答案