java - Equating value after testing for nullability in querydsl
问题描述
I am using querydsl
with spring-data-jpa
. When a value is retrieved from my rest controller, it can or cannot be null
. Lets assume that I have following class:
@Entity
class Person {
@Id private String name;
private int age;
}
I have created a BooleanExpression
as below:
public static final BooleanExpression hasName(String name) {
return QPerson.name.isNotNull().and(QPerson.name.eq(name));
}
When this is executed by PersonRepository#findAll(...)
, the following exception is thrown:
java.lang.IllegalArgumentException: eq(null) is not allowed. Use isNull() instead
at com.querydsl.core.types.dsl.SimpleExpression.eq(SimpleExpression.java:127) ~[querydsl-core-4.1.4.jar:na]
Can you please help me in fixing this exception?
解决方案
异常似乎说 hasName 的参数为空。尝试:
return name==null ? QPerson.name.isNull() : QPerson.name.eq(name);
推荐阅读
- css - 将 IconButton 与一行中的文本对齐
- python - 无法使用 slack SocketModeHandler 从 Python 中的 slack 读取通道消息
- r - ps 和 processx 包更新失败
- python - 使用 spaCy 时如何同时删除停用词和词形还原?
- python - 在 for 循环中创建一个包含变量名称的数据框列
- php - Apache 中的 Shell Exec 将输出发送到错误日志
- xamarin - 一段时间后要求验证
- python - 使用 python pandas 构建产品层次结构
- groovy - 具有多重赋值的 Groovy 空安全性
- jenkins-pipeline - 每次构建后如何将jenkinsfile的参数重置为null