java - Spring Data JPA - findAllBy 查询检查是否为空?

标签 java mysql hibernate spring-data-jpa jpql

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/

相关文章:

java - Spring batch + hibernate 在选择期间写入

java - Android 到 WCF 连接被对等方重置

java - vertx HTTPS (SSL/TLS) 服务器不工作。我无法访问 https ://localhost

java - 诊断 Dataproc 创建集群操作中的错误(Java 库)

mysql - 如何找到具有日期的条目(仅日和月,即接下来 3 天的间隔)

sql - FBSQLException 键大小超出实现

java - 关于性能和优化的问题

php - 我怎样才能使涉及大约 300,000 行的更新语句更快?

MySQL - 存储过程 - 联合选择然后更新和插入

hibernate - 无法使gradle获得liquibase-hibernate插件工作