diff --git a/pom.xml b/pom.xml
index 96d5e3af9..3b4036377 100644
--- a/pom.xml
+++ b/pom.xml
@@ -148,6 +148,14 @@
true
+
+
+ io.smallrye.reactive
+ mutiny
+ ${smallrye-mutiny}
+ true
+
+
diff --git a/src/main/java/org/springframework/data/repository/util/ReactiveWrapperConverters.java b/src/main/java/org/springframework/data/repository/util/ReactiveWrapperConverters.java
index 74f445a00..d0e449aa3 100644
--- a/src/main/java/org/springframework/data/repository/util/ReactiveWrapperConverters.java
+++ b/src/main/java/org/springframework/data/repository/util/ReactiveWrapperConverters.java
@@ -17,6 +17,8 @@ package org.springframework.data.repository.util;
import io.reactivex.Flowable;
import io.reactivex.Maybe;
+import io.smallrye.mutiny.Multi;
+import io.smallrye.mutiny.Uni;
import kotlinx.coroutines.flow.Flow;
import kotlinx.coroutines.flow.FlowKt;
import kotlinx.coroutines.reactive.ReactiveFlowKt;
@@ -104,6 +106,11 @@ public abstract class ReactiveWrapperConverters {
REACTIVE_WRAPPERS.add(FlowWrapper.INSTANCE);
}
+ if (ReactiveWrappers.isAvailable(ReactiveLibrary.MUTINY)) {
+ REACTIVE_WRAPPERS.add(UniWrapper.INSTANCE);
+ REACTIVE_WRAPPERS.add(MultiWrapper.INSTANCE);
+ }
+
registerConvertersIn(GENERIC_CONVERSION_SERVICE);
}
@@ -527,6 +534,43 @@ public abstract class ReactiveWrapperConverters {
}
}
+ /**
+ * Wrapper for SmallRye Mutiny's {@link io.smallrye.mutiny.Uni}.
+ */
+ private enum UniWrapper implements ReactiveTypeWrapper> {
+
+ INSTANCE;
+
+ @Override
+ public Class super io.smallrye.mutiny.Uni>> getWrapperClass() {
+ return io.smallrye.mutiny.Uni.class;
+ }
+
+ @Override
+ public io.smallrye.mutiny.Uni> map(Object wrapper, Function