當沒有行時,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