The documentation表明findByLastnameAndFirstname
等于where x.lastname = ?1 and x.firstname = ?2
。
我们知道在SQL = NULL
中总是假的。您必须使用IS NULL
。
我们假设我们有一个条目firstname = "First"
和lastname IS NULL
。我称之为findByLastnameAndFirstname(null, "First")
。我想它会返回空结果,因为= NULL
总是假的。但是根据我的测试,它返回了条目。
为什么呢? Spring Data JPA是否在内部神奇地做了什么?
如果我必须为此编写自定义查询,它将类似于:lastname IS NULL and lastname IS NULL or lastname = :lastname
。使用Spring Data JPA编写此类自定义查询的方法更简单?
答案 0 :(得分:0)
此查询始终返回List
。如果没有结果,则此列表是空列表(在Hibernate中,如果您返回SingleResult
而不是ResultList
,则Hibernate会抛出NoResultException
)。
在您的情况下,我猜使用findByLastnameIsNullAndFirstname(String firstname)
。