当没有行时,query.list()和criteria.list()都返回空列表而不是空值。 背后的原因是什么?hibernate query.list()方法返回空列表而不是空值
回答
原因是不强制在客户端代码中进行空值检查,与Effective Java 2nd Edition项一致:项目43:返回空数组或集合,而不是空值。
这使得客户端代码更简单,并且更少出错(最有可能的方法实现也是这样)。
空回成语很可能从C编程语言中的保持,在 其中阵列长度被从实际阵列单独返回。在C中,如果返回零作为长度,则不存在分配数组的优点。
嗯......但即使它阻止空检查,我们仍然需要检查列表的大小......对吧? 也是一种很好的做法,我们也总是检查null(至少在我们的团队中)。 – Reddy 2010-08-30 10:20:01
这就是要点 - 如果你确定(基于API的承诺),值不能为空,那么你不检查null。不,你不需要检查尺寸。当你迭代集合时,它会跳过迭代。 – Bozho 2010-08-30 11:20:54
好吧......知道了。如果它是空的,并且如果我没有检查它,那么NPE会让我的应用程序崩溃。但如果它是一个空集合,它会跳过逻辑并继续(因为我们通常会检查大小)。感谢Peter和Bozho。 – Reddy 2010-08-30 12:16:09
它是一致的:一个列表返回所有结果,不管有没有。
- 1. java hibernate query.list返回空列表
- 2. Scala:Succint方法检查空/空值并返回0而不是
- 3. Hibernate返回空列表
- 4. 根据列表空值返回不同值的最佳方法
- 5. Django DecimalField返回“None”而不是空值
- 6. 返回空而不是0
- 7. 返回,而不是空
- 8. 方法返回空值
- 9. NotesSession.GetDataBase方法返回空值
- 10. JsonObject.GetNamedString返回空间而不是空间
- 11. 列表返回空值
- 12. Slick 3.1.x方法返回空列表
- 13. Kafka streams.allMetadata()方法返回空列表
- 14. Pingdom get_actions_alerts方法返回空列表
- 15. SQL语句,返回空值,而不是空
- 16. 呼叫`ConcurrentLinkedQueue.poll`对空队列似乎返回0,而不是空
- 17. HasMany:空列表而不是空
- 18. Geocoder nearbys方法返回nil而不是空数组
- 19. gridfs“list”方法返回非空集合的空列表
- 20. 查询集返回空列表而不是错误
- 21. sqlite的fetchall返回None而不是空列表
- 22. 为什么返回空而不是列表本身?
- 23. 使用reduce mul返回1而不是空白列表
- 24. 列表理解不返回空列表
- 25. 休眠query.list()返回单个字符值
- 26. Spring Hibernate参考ID返回“空值”
- 27. Hibernate SQLQuery列表方法返回对象而不是对象数组
- 28. Can Cassandra可以返回一个空的集合/列表而不是空的
- 29. 计数返回空白,而不是0
- 30. SQL Server xQuery返回NULL而不是空
你为什么要null?我明白,当你查询单个结果 - 没有发现将有意义返回null。但是list()应该总是返回一个空列表!空列表的含义是什么? – ACV 2017-09-14 11:50:55