mongodb - 由于接收器类型不匹配,以下候选均不适用:在反应弹簧中
问题描述
我是使用 kotlin 的 springReactive 的新手。我在这个项目中使用 mongoDb,我不知道为什么会出现这个编译时错误
Cannot access class 'com.mongodb.client.MongoCollection'. Check your module classpath for missing or conflicting dependencies
org.springframework.data.mongodb.core.MongoOperations public abstract <T> com.mongodb.client.MongoCollection<org.bson.Document> createCollection(Class<T> entityClass)
@Nullable org.springframework.data.mongodb.core.CollectionOptions collectionOptions
项目.kt
package com.main.productservice.document
import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document
@Document
data class Item(
@Id
val id: String? = null,
val description: String? = null,
val price: Double? = null
)
ItemCapped.kt
package com.main.productservice.document
import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document
@Document
data class ItemCapped(
@Id
val id: String? = null,
val description: String? = null,
val price: Double? = null,
)
ItemDataIntilizer.kt
package com.main.productservice.Intilize
import com.main.productservice.document.Item
import com.main.productservice.document.ItemCapped
import com.main.productservice.repository.ItemReactiveCappedRepository
import com.main.productservice.repository.ItemReactiveRepository
import lombok.extern.slf4j.Slf4j
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.CommandLineRunner
import org.springframework.context.annotation.Profile
import org.springframework.data.mongodb.core.CollectionOptions
import org.springframework.data.mongodb.core.MongoOperations
import org.springframework.stereotype.Component
import reactor.core.publisher.Flux
import java.time.Duration
import java.util.*
import kotlin.math.log
@Component
@Profile("!test")
@Slf4j
class ItemDataInitializer : CommandLineRunner {
@Autowired
private lateinit var itemReactiveRepository: ItemReactiveRepository
@Autowired
private lateinit var itemReactiveCappedRepository: ItemReactiveCappedRepository
@Autowired
private lateinit var mongoOperations: MongoOperations
@Throws(Exception::class)
override fun run(vararg args: String?) {
initalDataSetUp();
createCappedCollection();
dataSetUpforCappedCollection();
}
private fun createCappedCollection() {
mongoOperations.dropCollection(ItemCapped::class.java)
.then(mongoOperations.createCollection(ItemCapped::class.java,
CollectionOptions.empty().maxDocuments(20).size(50000).capped()))
}
fun data(): MutableIterable<Any> {
return Arrays.asList(Item(null, "Samsung TV", 399.99),
Item(null, "LG TV", 329.99),
Item(null, "Apple Watch", 349.99),
Item("ABC", "Beats HeadPhones", 149.99))
}
fun dataSetUpforCappedCollection() {
val itemCappedFlux = Flux.interval(Duration.ofSeconds(1))
.map { i: Long ->
ItemCapped(null,
"Random Item $i",
100.00 + i)
}
itemReactiveCappedRepository
.insert(itemCappedFlux)
.subscribe { itemCapped -> log.info("Inserted Item is $itemCapped") }
}
private fun initalDataSetUp() {
itemReactiveRepository.deleteAll()
.thenMany(Flux.fromIterable(data()))
.flatMap(itemReactiveRepository::save)
.thenMany(itemReactiveRepository.findAll())
.subscribe { item -> println("Item inserted from CommandLineRunner : $item") }
}
}
我的 dataIntializer 类中出现确切错误
private fun createCappedCollection() {
mongoOperations.dropCollection(ItemCapped::class.java)
.then(mongoOperations.createCollection(ItemCapped::class.java,
CollectionOptions.empty().maxDocuments(20).size(50000).capped()))
}
我在这一点上遇到错误
.then(mongoOperations.createCollection(ItemCapped::class.java
解决方案
推荐阅读
- c# - C# 协方差混淆
- unit-testing - 嵌套条件语句与复合条件语句的结构有什么区别?
- reactjs - 从主包中隔离特定的配置文件
- java - 如何使用 Selenium 搜索网页中元素的修改?
- gradle - 如何正确使用 shadowJar 中的 minimize()?
- azure - 如何在 Azure 中使用 API 创建防火墙规则?
- elasticsearch - 嵌套对象上的 Elasticsearch 聚合
- gradle - Liquibase includeAll 找不到基本路径
- c# - 我的 Applovin 回调在 Unity 3d 中是否正常工作?
- c++ - 如何使用 icpc17 编译使用递归可变参数模板的 c++ 代码?