[英]spring data findBy return type
spring 數據 findBy 方法的可能返回類型是什么? 我沒有在任何地方找到任何綜合列表。
像 findByXXX 可以返回
1) Entity
2) Optional<Entity>
3) List<Entity>
4) Stream<Entity>
還有更多,但我們有明確的清單嗎?
此外, List<Entity>
在未找到數據時返回 emptyList 但Stream<Entity>
在未找到數據時返回 null,因此當您在流上應用 map/filter 等時,您將獲得 NPE。
除了在調用流函數之前物理檢查 null 之外,是否有更好的方法來使用 Stream 而不會導致 NPE。
您可能的返回類型列表是正確的。 當您需要對結果進行分頁時,您也可以使用Page和Slice類型。 見示例:
Page<User> findByLastname(String lastname, Pageable pageable);
Slice<User> findByLastname(String lastname, Pageable pageable);
“第一種方法允許您將 org.springframework.data.domain.Pageable 實例傳遞給查詢方法,以將分頁動態添加到靜態定義的查詢中。頁面知道可用元素和頁面的總數。它通過觸發計數查詢以計算總數的基礎設施。由於這可能是昂貴的,具體取決於所使用的商店,因此 Slice 可以用作返回。Slice 只知道是否有下一個 Slice 可用,這在步行時可能就足夠了更大的結果集。” - 查看更多信息: Spring Data Documentation
對於另一個問題,您可以使用 Guava/Java 8 Optional 。 這樣,您的查詢方法將返回一個包含找到的對象的 Optional 或一個空的 Optional。 Optional是一種用非空值替換可為空的 T 引用的方法,請參見示例:
Optional<User> findById(Long id);
我希望我有幫助你。 =)
雖然有點晚,但支持的返回類型記錄在此處:
https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repository-query-return-types
通常,返回類型可以是以下任何類別:
- 無效
- 原語
- 包裝類型
- 噸
- 迭代器
- 收藏
- 列表
- 可選
- 選項
- 流
- 流媒體
- 實現 Streamable 並采用 Streamable 構造函數或工廠方法參數的類型
- Vavr Seq, List, Map, Set
- 未來
- 可完成的未來
- 未來可聽
- 切片
- 頁面
- 地理結果
- 地理結果
- 地理頁面
- 單聲道
- 助焊劑
- 單身
- 也許
- 流動的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.