当JPA查询没有匹配时的返回值。

31

我在我的存储库中使用 Spring JPA 命名查询。 我的问题是,如果查询不匹配任何结果,我找不到有关返回值的信息。 我假设对于 findOne(),它将为null,但我不知道对于 findAllByName() 函数会怎样。

有人从他/她的经验中知道或知道文档中的任何位置吗?

1个回答

40
从我的一点个人经验来看,如果您在repo上搜索一个对象,例如通过Id或Name,那么named query方法将返回一个类型为T的对象,但是如果没有找到结果,则会返回null。
可以返回多个元素的方法将产生一个空集合List<T>(不为null)。
这里有一些文档: http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-keywords 附录D:存储库查询返回类型 支持的查询返回类型: T 唯一实体。期望查询方法最多返回一个结果。如果没有找到结果,则返回null。多个结果将触发IncorrectResultSizeDataAccessException。
迭代器 迭代器。
似乎只有当返回类型是T类型时,才会指定如果没有匹配项则返回null。

3
该死的 NP 呵呵!更好的阅读 / 更好的文档可以避免多少个 if != null 语句? - exoddus
如果一个带有@RepositoryRestResource的存储库返回一个空列表,它将返回一个带有一个“dummyObject”的列表。我该如何使其返回一个空列表?它返回以下内容:“content”:[ { “value”:[], “rel”:null, “collectionValue”:true, “relTargetType”:“com.xy.xy.xy.model.Campaign” } ]-------------------但我只需要content[]。 - Daniel Jeney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接