![](/img/trans.png)
[英]Spring Boot JPA Native Query - is not null check based on parameter
[英]Null check on input object in spring boot jpa query
我有这个 object:
@Getter
@Setter
public class PhaseBean {
private Long id;
private String name;
private PhaseBean subPhase;
}
作为输入传递给此回购方法(简化):
@Query(value=
" ...
and ( :#{#phaseBean.id} is null or :#{#phaseBean.name} is null .... //row1
and ( :#{#phaseBean.subPhase} is null or :#{#phaseBean.subPhase.id} is null or ... //row2
... "
)
List<Phase> load(@Param("phaseBean") PhaseBean phaseBean);
在我完成的测试中,phaseBean 以这种方式被评估:
id = 3
name = null
subPhase = null
当执行 repo 方法时,出现此错误:
SpelEvaluationException: EL1007E: Property or field 'id' cannot be found on null
我做了两个不同的测试:
所以我确定问题是检查:#{#phaseBean.subPhase} is null不适用于内部 object。
有什么建议吗? 非常感谢。
最后,我必须更改方法签名以使用 String、Long ecc。 作为输入而不是我的自定义 object ( PhaseBean ); 通过这种方式,我可以使用“正常”语法“:param”并且一切正常(我在调用者方法中移动了 PhaseBean 对象的 null 控件):
@Query(value=
" ...
and ( :subPhaseId is null or ... //row2
... "
)
List<Phase> load(
...
@Param("phaseId") Long phaseId, @Param("subPhaseId") Long subPhaseId
...
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.