The documentation显示 findByLastnameAndFirstname
等于 where x.lastname = ?1 and x.firstname = ?2
。
我们知道在sql中= NULL
总是false。您必须使用 IS NULL
。
假设我们有一个条目 firstname = "First"
和 lastname IS NULL
。我称之为 findByLastnameAndFirstname(null, "First")
。我想它会返回空结果,因为 = NULL
总是错误的。然而,根据我的测试,它返回了条目。
为什么? Spring Data JPA 是否在内部神奇地做了一些事情?
如果我必须为此编写一个自定义查询,它将类似于 :lastname IS NULL and lastname IS NULL 或 lastname = :lastname
。使用 Spring Data JPA 编写此类自定义查询的更简单方法?
最佳答案
这个查询总是返回一个List
。如果没有结果,这个列表是一个空列表(在 Hibernate 中,如果你返回一个 SingleResult
而不是 ResultList
然后 Hibernate 抛出 NoResultException
)。
在您的情况下,我猜想使用 findByLastnameIsNullAndFirstname(String firstname)
。
关于java - Spring Data JPA - findAllBy 查询检查是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48084193/