【问题标题】:When will spring fix abstract mapping on couchbase reactivespring什么时候修复couchbase响应上的抽象映射
【发布时间】: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

【问题讨论】:

    标签: spring-data-couchbase


    【解决方案1】:

    查看完整的堆栈跟踪并了解您使用的版本可能会有所帮助。

    在 Java 中,您可以简单地将 Report 设为不是 Abstract。这在 Android 中不起作用吗?

    谢谢,

    • 迈克

    【讨论】:

      【解决方案2】:

      这在https://github.com/spring-projects/spring-data-couchbase/issues/1315 中得到解决,它在今天发布的 4.3.2 中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-11-07
        • 2023-03-23
        • 2017-04-15
        • 2022-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多