在queryDsl查询中,类路径是否有限制?

3
我正在使用QueryDSL在我的Java应用程序中构建谓词,似乎使用过大的类路径会导致NullPointerException。您是否曾经遇到过这个问题或者这是正常的行为?
例如,假设我有5个嵌套的类(City->Area->House->Room->Bed),我想查询一个床是否属于某个区域,基于该区域的id。因此,我将构建一个BooleanExpression,其中包含:
public static BooleanExpression areaIdEquals(Long areaId) {
  QBed bed = QBed.bed;
  return bed.room.house.area.id.eq(areaId)
}

这会抛出一个NullPointerException异常,因为显然area总是null。

我只想知道对于这种查询,类路径大小是否有限制是常识,因为我的路径的第四个元素总是null,我在文档中找不到任何关于它的信息。

"Original Answer"翻译成:"最初的回答"

1个回答

3
我找到了解释此问题的文档部分

默认情况下,Querydsl 仅初始化前两个级别的引用属性。在需要更长的初始化路径的情况下,必须通过 com.querydsl.core.annotations.QueryInit 注释在领域类型中注明这些路径。 QueryInit 用于需要进行深层初始化的属性。

我使用 QueryInit 测试了解决方案,它有效。


1
我无法让它正常工作,在我添加了QueryInit注解并运行构建之后,我仍然无法访问第四层嵌套对象。 - undefined
https://github.com/querydsl/querydsl/issues/2129 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接