我正在尝试使用QueryDSL Q对象设置BooleanExpression,但是在定义谓词时出现空指针异常。我知道在问题字段上使用QueryInit标记可以解决此问题。但是,当我尝试时它没有用。我检查了另一篇堆栈溢出文章,其中说QueryInit的最大初始化路径深度为4,但是我无法在文档中找到它,而是让它在路径长度为5的其他字段中工作。初始化路径深度?如果是这样,有办法解决吗?
我尝试将初始化路径设置为“ 。”,但是它仅将对象初始化了几个级别。
以下两种情况下的queryObject都是同一对象。
以下是我正在工作的示例
changeRequestExpression.and(queryObject.changeRequest.obligation.clientLocation.client.bookOfBusiness.accountManager.id.in(params.accountManagerIds))
像这样在queryObject上设置QueryInit路径:
@QueryInit("obligation.clientLocation.client.bookOfBusiness.accountManager")
@OneToOne(mappedBy = "assignment", fetch = FetchType.LAZY)
private ChangeRequestDataObject changeRequest;
下面的代码集是中断示例。主要区别在于Q对象字段之一是SetPath,要求我们使用.any()
supportTicketExpression = queryObject.supportTicket.user.clientRoles.any().client.bookOfBusiness.accountManager.id.in(params.accountManagerIds)
像这样在queryObject上设置QueryInit路径:
@QueryInit("user.clientRoles.client.bookOfBusiness.accountManager")
@OneToOne(mappedBy = "assignment", fetch = FetchType.LAZY)
private SupportTicketDataObject supportTicket;