在 querydsl 中测试可空性后将值等同
Equating value after testing for nullability in querydsl
我正在使用 querydsl
和 spring-data-jpa
。当从我的休息控制器中检索到一个值时,它可以是也可以不是 null
。假设我有以下 class:
@Entity
class Person {
@Id private String name;
private int age;
}
我创建了一个 BooleanExpression
如下:
public static final BooleanExpression hasName(String name) {
return QPerson.name.isNotNull().and(QPerson.name.eq(name));
}
当 PersonRepository#findAll(...)
执行此操作时,抛出以下异常:
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]
你能帮我解决这个异常吗?
异常似乎表明 hasName 的参数为空。尝试:
return name==null ? QPerson.name.isNull() : QPerson.name.eq(name);
我正在使用 querydsl
和 spring-data-jpa
。当从我的休息控制器中检索到一个值时,它可以是也可以不是 null
。假设我有以下 class:
@Entity
class Person {
@Id private String name;
private int age;
}
我创建了一个 BooleanExpression
如下:
public static final BooleanExpression hasName(String name) {
return QPerson.name.isNotNull().and(QPerson.name.eq(name));
}
当 PersonRepository#findAll(...)
执行此操作时,抛出以下异常:
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]
你能帮我解决这个异常吗?
异常似乎表明 hasName 的参数为空。尝试:
return name==null ? QPerson.name.isNull() : QPerson.name.eq(name);