Spring Data JPA - findAllBy查询检查null?

时间:2018-01-03 19:49:34

标签: java mysql hibernate spring-data-jpa jpql

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编写此类自定义查询的方法更简单?

1 个答案:

答案 0 :(得分:0)

此查询始终返回List。如果没有结果,则此列表是列表(在Hibernate中,如果您返回SingleResult而不是ResultList,则Hibernate会抛出NoResultException)。

在您的情况下,我猜使用findByLastnameIsNullAndFirstname(String firstname)

相关问题