文件显示 findByLastnameAndFirstname
等于 where x.lastname = ?1 and x.firstname = ?2
.
在sql中我们知道这一点 = NULL
总是假的。你必须使用 IS NULL
.
假设我们有一个条目 firstname = "First"
以及 lastname IS NULL
. 我称之为 findByLastnameAndFirstname(null, "First")
. 我想它会返回空结果,因为 = NULL
总是假的。然而,从我的测试,它返回了条目。
为什么?springdatajpa在内部做了什么神奇的事情吗?
如果我必须为此编写一个自定义查询,它将类似于 :lastname IS NULL and lastname IS NULL or lastname = :lastname
. 用spring数据jpa编写这种定制查询更简单吗?
1条答案
按热度按时间v1l68za41#
此查询始终返回
List
. 如果没有结果,则此列表为空列表(在hibernate中,如果返回SingleResult
不是ResultList
然后hibernate抛出NoResultException
).在你的情况下,我想使用
findByLastnameIsNullAndFirstname(String firstname)
.