java - Reactive Mongo - DeleteAllBy...查询 - 找不到类型类 java.lang.Void 的 PersistentEntity

标签 java spring mongodb spring-data-mongodb spring-webflux

嗨,我有一个 spring boot webflux 应用程序并使用 mongo db 作为后端。我想删除与特定查询匹配的所有文档,因此我创建了一个方法

fun deleteAllByInsertTimestampIsBefore(to: LocalDateTime): Mono<Void>

但是,当我想执行该方法时,出现异常

reactor.core.Exceptions$ErrorCallbackNotImplemented: org.springframework.data.mapping.MappingException: Couldn't find PersistentEntity for type class java.lang.Void!
Caused by: org.springframework.data.mapping.MappingException: Couldn't find PersistentEntity for type class java.lang.Void!
    at org.springframework.data.mapping.context.MappingContext.getRequiredPersistentEntity(MappingContext.java:79)
    at org.springframework.data.mongodb.repository.query.DtoInstantiatingConverter.<init>(DtoInstantiatingConverter.java:62)
    at org.springframework.data.mongodb.repository.query.ReactiveMongoQueryExecution$ResultProcessingConverter.convert(ReactiveMongoQueryExecution.java:176)
    at org.springframework.data.mongodb.repository.query.ReactiveMongoQueryExecution$ResultProcessingExecution.execute(ReactiveMongoQueryExecution.java:146)
    at org.springframework.data.mongodb.repository.query.AbstractReactiveMongoQuery.execute(AbstractReactiveMongoQuery.java:125)
    at org.springframework.data.mongodb.repository.query.AbstractReactiveMongoQuery.execute(AbstractReactiveMongoQuery.java:91)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:605)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$invoke$3(RepositoryFactorySupport.java:595)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:595)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:59)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:93)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:61)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.data.repository.core.support.MethodInvocationValidator.invoke(MethodInvocationValidator.java:99)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
    at com.sun.proxy.$Proxy91.deleteAllByInsertTimestampIsBefore(Unknown Source)
    at com.x.sniper.app.registration.RegistrationRequestService.removeOldRegistrationRequest(RegistrationRequestService.kt:56)
    at com.x.sniper.app.registration.SpringRegistrationService.removeOldRegistrationRequest(SpringRegistrationService.kt:76)
    at com.x.sniper.app.database.ScheduledDatabaseCleanup$setup$1.invoke(ScheduledDatabaseCleanup.kt:32)
    at com.x.sniper.app.database.ScheduledDatabaseCleanup$setup$1.invoke(ScheduledDatabaseCleanup.kt:17)
    at com.x.sniper.app.database.ScheduledDatabaseCleanup$scheduledDatabaseCleanup$3.apply(ScheduledDatabaseCleanup.kt:47)
    at com.x.sniper.app.database.ScheduledDatabaseCleanup$scheduledDatabaseCleanup$3.apply(ScheduledDatabaseCleanup.kt:17)
    at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:350)
    at reactor.core.publisher.FluxFlatMap$FlatMapMain.drainLoop(FluxFlatMap.java:664)
    at reactor.core.publisher.FluxFlatMap$FlatMapMain.drain(FluxFlatMap.java:540)
    at reactor.core.publisher.FluxFlatMap$FlatMapInner.onSubscribe(FluxFlatMap.java:924)
    at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139)
    at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63)
    at reactor.core.publisher.Flux.subscribe(Flux.java:7921)
    at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:389)
    at reactor.core.publisher.FluxPeek$PeekSubscriber.onNext(FluxPeek.java:192)
    at reactor.core.publisher.FluxInterval$IntervalRunnable.run(FluxInterval.java:123)
    at reactor.core.scheduler.PeriodicWorkerTask.call(PeriodicWorkerTask.java:59)
    at reactor.core.scheduler.PeriodicWorkerTask.run(PeriodicWorkerTask.java:73)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

是否意味着spring数据DeleteBy..方法返回与 Mono 不同的内容

最佳答案

响应式 SpringData deleteBy查询可以发出已删除文档的数量,或已删除实体本身,如下面的代码片段所示。

fun deleteAllByLastname(lastname: String): Mono<Long>
fun deleteAllByLastname(lastname: String): Flux<Person> 

如果您只对完成信号感兴趣,请使用then()将结果转换为Mono<Void> .

我创建了DATAMONGO-2406改善 deleteBy 的行为.

关于java - Reactive Mongo - DeleteAllBy...查询 - 找不到类型类 java.lang.Void 的 PersistentEntity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58718662/

相关文章:

python - 带有gevent的mongoengine,如何关闭/结束连接?

java - 在 Android 应用程序中检测汽车加速度?

java - 通过测试套件中的@ExcludeCategory 忽略 junit 测试

java - 无法制作 JTextField ActionListener

java - 与直接使用包装的 Twitter 等库相比,SpringSocial 为我带来了哪些额外好处

spring - 使用 Spring + Hibernate 的 Multi-Tenancy 中鉴别器模型的事务支持

java - org.postgresql.util.PSQLException : The server does not support SSL

java - 我什么时候需要创建列表的新实例?

node.js - 如何优化 mongodb 中具有 1M 条记录的 upsert 批量查询

javascript - Mongo 查询从集合数组中返回特定值