亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java Spring:MongoRepository count() 和 findAll()

Java Spring:MongoRepository count() 和 findAll()

德瑪西亞99 2023-08-09 16:30:24
我注意到 mongo 的 Spring 數據中有一些奇怪的東西:MongoRepositoryextendsCrudRepository并findAll()返回 an ,Iterable該count()方法可以正常使用,因為它返回 a long。class CrudRepository {  ...  Iterable<T> findAll();  long count();}在 mongo 中,MongoRepository該findAll()方法返回一個List:class MongoRepository extends CrudRepository {  ...    @Override  List<T> findAll();}但是 aList#size()返回 anint并且該MongoRepository#count()方法仍然返回 a long。當集合超過時會發生什么Integer.MAX_VALUE???我們還能打電話嗎List<T> findAll()?
查看完整描述

2 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊


每個維度表達式都會經歷一元數字提升(第 5.6.1 節)。提升的類型必須是 int,否則會發生編譯時錯誤。

2,147,483,648由于維度必須是 int,因此我們可以在數組中存儲最大大小,并且考慮到 ArrayList 只是一個數組,因此我們不能在 ArrayList 中存儲超過 INTEGER.MAX_VALUE 的值。(當然,List 的不同實現可能有不同的行為)

Spring Data JPA允許您自定義查詢方法。您始終可以自由創建返回類型為 Iterable 的查詢方法。

@Override
Iterable<T>?findAll();


查看完整回答
反對 回復 2023-08-09
?
開心每一天1111

TA貢獻1836條經驗 獲得超13個贊

來自java.util.List#sizejavadoc:

返回此列表中的元素數量。如果此列表包含多個Integer.MAX_VALUE元素,則返回Integer.MAX_VALUE。

因此,當集合大小超過該方法時,Integer.MAX_VALUEsize方法將返回Integer.MAX_VALUE

我們還能打電話嗎List<T> findAll()?

是的,但很可能調用會失敗OutOfMemoryError


查看完整回答
反對 回復 2023-08-09
  • 2 回答
  • 0 關注
  • 268 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號