【发布时间】:2021-11-29 11:41:12
【问题描述】:
有什么解决方案如何在 spring boot starter data couchbase reactive 中使用超类型(抽象类)? 我的想法是拥有超级类型并将这种超级类型保存到沙发桶中,并从中读取。 写作工作完美,但在阅读时出现异常:
org.springframework.beans.BeanInstantiationException:无法实例化 [com.entities.Report]:类是抽象的
类的实现如下: 报告:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "documentType"
)
@JsonSubTypes(
JsonSubTypes.Type(value = TestReport::class, name = TestReport.DOCUMENT_TYPE),
JsonSubTypes.Type(value = Test2Report::class, name = Test2Report.DOCUMENT_TYPE)
)
@Document
abstract class Report : SyncDocument {
var inspectorId: String = ""
var reportNumber: String = ""
var reportDate: Long = 0
constructor() : super(null) {}
}
测试报告:
@Document
@TypeAlias(TestReport.DOCUMENT_TYPE)
class TestReport : Report {
companion object {
const val DOCUMENT_TYPE: String = "TestReport"
}
var string3: String = ""
constructor() : super() {}
}
测试2报告:
@Document
@TypeAlias(Test2Report.DOCUMENT_TYPE)
class Test2Report : Report {
companion object {
const val DOCUMENT_TYPE: String = "Test2Report"
}
var string2: String = ""
constructor() : super() {}
}
我已经在其他不使用 ReactiveCrudRepository 的 android 项目上以这种方式实现了代码,并且运行良好。现在我想在 ReactiveCrudRepository 上使用相同的架构。
感谢您的任何建议:D
【问题讨论】: