我正在使用QueryDSL在我的Java应用程序上构建谓词,并且似乎使用太大的类路径会创建NullPointerException。 你们有没有人遇到过这个问题,或者这是正常行为吗?
例如,假设我有5个嵌套类(城市-> 区域-> 房屋-> 房间-> 床),我想根据该区域的ID查询床是否属于某个区域。 因此,我将使用:
构建一个BooleanExpression。public static BooleanExpression areaIdEquals(Long areaId) {
QBed bed = QBed.bed;
return bed.room.house.area.id.eq(areaId)
}
这会引发NullPointerException,因为显然,area始终为null。
我只是想知道这种查询的类路径大小是否受限制是常识,因为我发现路径的第4个元素始终为null很奇怪。我在文档中找不到任何内容。
答案 0 :(得分:0)
我找到了解释它的section of the documentation。
默认情况下,Querydsl仅初始化前两个级别的引用属性。如果需要更长的初始化路径,则必须通过com.querydsl.core.annotations.QueryInit注释在域类型中进行注释。 QueryInit用于需要深度初始化的属性。
我使用QueryInit测试了该解决方案,并且有效。