下表列出了 Spring Data repository 通常支持的返回类型。但是,请查阅特定存储的文档以获取支持的返回类型的确切列表,因为此处列出的某些类型可能在特定存储中不受支持。
|
地理空间类型(例如 GeoResult 、GeoResults 和 GeoPage )仅适用于支持地理空间查询的数据存储。一些存储模块可能会定义自己的结果包装器类型。 |
表 1. 查询返回类型
返回类型 |
描述 |
void
|
表示没有返回值。 |
Primitives |
Java 基本类型。 |
Wrapper types |
Java 包装类型。 |
T
|
唯一实体。期望查询方法最多返回一个结果。如果未找到结果,则返回 null 。如果返回多个结果,则会触发 IncorrectResultSizeDataAccessException 。 |
Iterator<T>
|
一个 Iterator 。 |
Collection<T>
|
一个 Collection 。 |
List<T>
|
一个 List 。 |
Optional<T>
|
一个 Java 8 或 Guava 的 Optional 。期望查询方法最多返回一个结果。如果未找到结果,则返回 Optional.empty() 或 Optional.absent() 。如果返回多个结果,则会触发 IncorrectResultSizeDataAccessException 。 |
Option<T>
|
一个 Scala 或 Vavr 的 Option 类型。语义行为与前面描述的 Java 8 的 Optional 相同。 |
Stream<T>
|
一个 Java 8 的 Stream 。 |
Streamable<T>
|
Iterable 的一个便捷扩展,直接暴露流、映射和过滤结果、串联结果等方法。
|
实现 Streamable 并接受 Streamable 构造函数或工厂方法参数的类型 |
暴露接受 Streamable 作为参数的构造函数或 ….of(…) /….valueOf(…) 工厂方法的类型。详情请参阅返回自定义 Streamable 包装器类型。 |
Vavr Seq , List , Map , Set |
Vavr 集合类型。详情请参阅支持 Vavr 集合。 |
Future<T>
|
一个 Future 。期望方法使用 @Async 进行注解,并且需要启用 Spring 的异步方法执行能力。 |
CompletableFuture<T>
|
一个 Java 8 的 CompletableFuture 。期望方法使用 @Async 进行注解,并且需要启用 Spring 的异步方法执行能力。 |
Slice<T>
|
一个带有更多数据可用指示的大小数据块。需要一个 Pageable 方法参数。 |
Page<T>
|
一个带有附加信息(例如总结果数)的 Slice 。需要一个 Pageable 方法参数。 |
Window<T>
|
从 scroll 查询获得的 Window 结果。提供 ScrollPosition 以发出下一个 scroll 查询。需要一个 ScrollPosition 方法参数。 |
GeoResult<T>
|
一个带有附加信息(例如到参考位置的距离)的结果条目。 |
GeoResults<T>
|
一个带有附加信息(例如到参考位置的平均距离)的 GeoResult<T> 列表。 |
GeoPage<T>
|
一个带有 GeoResult<T> 的 Page ,例如到参考位置的平均距离。 |
Mono<T>
|
使用响应式 repository 发出零个或一个元素的 Project Reactor Mono 。期望查询方法最多返回一个结果。如果未找到结果,则返回 Mono.empty() 。如果返回多个结果,则会触发 IncorrectResultSizeDataAccessException 。 |
Flux<T>
|
使用响应式 repository 发出零个、一个或多个元素的 Project Reactor Flux 。返回 Flux 的查询也可以发出无限数量的元素。 |
Single<T>
|
使用响应式 repository 发出一个元素的 RxJava Single 。期望查询方法最多返回一个结果。如果未找到结果,则返回 Mono.empty() 。如果返回多个结果,则会触发 IncorrectResultSizeDataAccessException 。 |
Maybe<T>
|
使用响应式 repository 发出零个或一个元素的 RxJava Maybe 。期望查询方法最多返回一个结果。如果未找到结果,则返回 Mono.empty() 。如果返回多个结果,则会触发 IncorrectResultSizeDataAccessException 。 |
Flowable<T>
|
使用响应式 repository 发出零个、一个或多个元素的 RxJava Flowable 。返回 Flowable 的查询也可以发出无限数量的元素。 |