|
@@ -1,6 +1,5 @@
|
|
|
package org.hswebframework.web.crud.service;
|
|
|
|
|
|
-import org.hswebframework.ezorm.core.param.QueryParam;
|
|
|
import org.hswebframework.ezorm.rdb.mapping.ReactiveDelete;
|
|
|
import org.hswebframework.ezorm.rdb.mapping.ReactiveQuery;
|
|
|
import org.hswebframework.ezorm.rdb.mapping.ReactiveRepository;
|
|
@@ -8,14 +7,13 @@ import org.hswebframework.ezorm.rdb.mapping.ReactiveUpdate;
|
|
|
import org.hswebframework.ezorm.rdb.mapping.defaults.SaveResult;
|
|
|
import org.hswebframework.web.api.crud.entity.PagerResult;
|
|
|
import org.hswebframework.web.api.crud.entity.QueryParamEntity;
|
|
|
+import org.hswebframework.web.api.crud.entity.TransactionManagers;
|
|
|
import org.reactivestreams.Publisher;
|
|
|
-import org.springframework.transaction.ReactiveTransactionManager;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import reactor.core.publisher.Flux;
|
|
|
import reactor.core.publisher.Mono;
|
|
|
|
|
|
import java.util.Collection;
|
|
|
-import java.util.Collections;
|
|
|
import java.util.function.Function;
|
|
|
|
|
|
public interface ReactiveCrudService<E, K> {
|
|
@@ -34,67 +32,67 @@ public interface ReactiveCrudService<E, K> {
|
|
|
return getRepository().createDelete();
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<E> findById(K id) {
|
|
|
return getRepository()
|
|
|
.findById(id);
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Flux<E> findById(Collection<K> publisher) {
|
|
|
return getRepository()
|
|
|
.findById(publisher);
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<E> findById(Mono<K> publisher) {
|
|
|
return getRepository()
|
|
|
.findById(publisher);
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Flux<E> findById(Flux<K> publisher) {
|
|
|
return getRepository()
|
|
|
.findById(publisher);
|
|
|
}
|
|
|
|
|
|
- @Transactional
|
|
|
+ @Transactional(transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<SaveResult> save(Publisher<E> entityPublisher) {
|
|
|
return getRepository()
|
|
|
.save(entityPublisher);
|
|
|
}
|
|
|
|
|
|
- @Transactional
|
|
|
+ @Transactional(transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<Integer> updateById(K id, Mono<E> entityPublisher) {
|
|
|
return getRepository()
|
|
|
.updateById(id, entityPublisher);
|
|
|
}
|
|
|
|
|
|
- @Transactional
|
|
|
+ @Transactional(transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<Integer> insertBatch(Publisher<? extends Collection<E>> entityPublisher) {
|
|
|
return getRepository()
|
|
|
.insertBatch(entityPublisher);
|
|
|
}
|
|
|
|
|
|
- @Transactional
|
|
|
+ @Transactional(transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<Integer> insert(Publisher<E> entityPublisher) {
|
|
|
return getRepository()
|
|
|
.insert(entityPublisher);
|
|
|
}
|
|
|
|
|
|
- @Transactional
|
|
|
+ @Transactional(transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<Integer> deleteById(Publisher<K> idPublisher) {
|
|
|
return getRepository()
|
|
|
.deleteById(idPublisher);
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Flux<E> query(Mono<? extends QueryParamEntity> queryParamMono) {
|
|
|
return queryParamMono
|
|
|
.flatMapMany(this::query);
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Flux<E> query(QueryParamEntity param) {
|
|
|
return getRepository()
|
|
|
.createQuery()
|
|
@@ -102,12 +100,12 @@ public interface ReactiveCrudService<E, K> {
|
|
|
.fetch();
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<PagerResult<E>> queryPager(QueryParamEntity queryParamMono) {
|
|
|
return queryPager(queryParamMono, Function.identity());
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default <T> Mono<PagerResult<T>> queryPager(QueryParamEntity query, Function<E, T> mapper) {
|
|
|
if (query.getTotal() != null) {
|
|
|
return getRepository()
|
|
@@ -133,19 +131,19 @@ public interface ReactiveCrudService<E, K> {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default <T> Mono<PagerResult<T>> queryPager(Mono<? extends QueryParamEntity> queryParamMono, Function<E, T> mapper) {
|
|
|
return queryParamMono
|
|
|
.cast(QueryParamEntity.class)
|
|
|
.flatMap(param -> queryPager(param, mapper));
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<PagerResult<E>> queryPager(Mono<? extends QueryParamEntity> queryParamMono) {
|
|
|
return queryPager(queryParamMono, Function.identity());
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<Integer> count(QueryParamEntity queryParam) {
|
|
|
return getRepository()
|
|
|
.createQuery()
|
|
@@ -153,7 +151,7 @@ public interface ReactiveCrudService<E, K> {
|
|
|
.count();
|
|
|
}
|
|
|
|
|
|
- @Transactional(readOnly = true)
|
|
|
+ @Transactional(readOnly = true, transactionManager = TransactionManagers.r2dbcTransactionManager)
|
|
|
default Mono<Integer> count(Mono<? extends QueryParamEntity> queryParamMono) {
|
|
|
return queryParamMono.flatMap(this::count);
|
|
|
}
|