未找到匹配项时 JPA 查询的返回值

Posted

技术标签:

【中文标题】未找到匹配项时 JPA 查询的返回值【英文标题】:Return value of JPA query when no matches found 【发布时间】:2016-11-23 15:36:16 【问题描述】:

我在我的存储库中使用Spring JPA named querys。我的问题是,我无法在任何地方找到不匹配任何结果的查询的返回值的信息。我假设 findOne() 为空,但我不知道 findAllByName() 函数是什么。

有没有人从他/她的经验中知道或知道在文档中的位置?

【问题讨论】:

【参考方案1】:

根据我的个人经验,如果你在你的 repo 中搜索一个对象,例如通过 Id 或 Name,命名的查询方法会返回一个 T 类型的对象,但是如果你的 repo 没有找到结果,它将返回 null。

可以返回多个元素的方法,将产生一个空集合List<T>(not null)。

这里有一些文档: http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-keywords

附录 D:存储库查询返回类型

支持的查询返回类型 查询返回类型:

T 一个独特的实体。期望查询方法 最多返回一个结果。如果没有找到结果 null 是 回来。多个结果将触发 不正确的ResultSizeDataAccessException。

Iterator 一个迭代器。

似乎只有当返回类型为 T 类型时才指定如果没有匹配则返回 null。

【讨论】:

该死的 NP 呵呵!通过更好的阅读/更好的文档可以避免多少 if != null 语句。 一个带有@RepositoryRestResource 的存储库在一个空列表的情况下,将返回一个带有一个“dummyObject”的列表..我怎样才能让它只返回一个空列表?它返回:"content": [ "value": [], "rel": null, "collectionValue": true, "relTargetType": "com.xy.xy.xy.model.Campaign" ]-- -----------------但我只需要内容[]

以上是关于未找到匹配项时 JPA 查询的返回值的主要内容,如果未能解决你的问题,请参考以下文章

从 TextBox 获取输入时,Linq 查询未返回值

如何在 JPA 和 Hibernate 中返回所有值

JPA 查询未在列表中返回更新的结果

如何编写从两个搜索值返回匹配项的 sql 查询

AAPT:检索项目的父项时出错:未找到与名称匹配的资源”

具有 CSV 值的列上的 JPA 查询 IN 子句未返回确切结果