Hibernate query.list() 方法返回空列表而不是空值

当没有行时,两者都返回列表而不是值。query.list()criteria.list()null

这背后的原因是什么?


答案 1

原因不是在客户端代码中强制执行空值检查,这与《有效的 Java 2nd Edition》第 43 项:返回空数组或集合,而不是空值保持一致。

这使得客户端代码更简单,更不容易出错(很可能还有方法实现)。

null-return 习语可能是 C 编程语言的延续,其中数组长度与实际数组分开返回。在 C 中,如果返回零作为长度,则分配数组没有任何好处。


答案 2

它是一致的:返回一个包含所有结果的列表,无论是否有任何结果。