java getresultlist_javax.persistence.Query.getResultList()可以返回null吗?

问题

如果是这样,在什么情况下呢?

Javadoc和JPA规范什么也没说。

#1 热门回答(62 赞)

你是对的。 JPA规范没有提及它。但是Java Persistence with Hibernate一书,第2版,说:

如果查询结果为空,则返回null

当你调用query.getResultList()而没有结果时,Hibernate JPA实现(实体管理器)返回null。

更新

正如一些用户所指出的,似乎最新版本的Hibernate会返回一个空列表。

#2 热门回答(21 赞)

如果规格说不可能发生,你会相信他们吗?鉴于你的代码可能会与不同的JPA实现相悖,你是否相信每个实现者都能正确实现?

无论如何,我都会进行防御性编码并检查是否为null。

现在最大的问题是:我们应该将"null"和空List作为同义词吗?这是规范应该帮助我们的地方,而不是。

我的猜测是null返回(如果确实可能发生)将等同于"我不理解查询",空列表将是"是,理解查询,但没有记录"。

你可能有一个处理不可解决的查询的代码路径(可能是一个例外),我倾向于指向该路径的null返回。

#3 热门回答(13 赞)

与Arthur的帖子相反,当我实际运行一个没有实体匹配的查询时,我得到一个空列表,而不是null。这是使用Hibernate并且我认为是正确的行为:当你要求实体集合而没有任何实体时,空列表是正确的答案。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值