#spring-data-couchbase
Вопрос:
Есть ли какое-либо решение, как использовать супертип (абстрактный класс) в spring boot starter data couchbase reactive ? Моя идея состоит в том, чтобы иметь супертип, сохранить этот супертип в корзине couchabse и прочитать из него. Написание работает отлично, но при чтении я получил исключение:
орг.каркас.фасоль.Исключение BeanInstantiationException: Не удалось создать экземпляр [com.entities.Отчет]: Класс является абстрактным
Классы реализуются следующим образом: Отчет:
@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() {} }
Я реализовал код таким образом в другом проекте Android, где ReactiveCrudRepository не используется и работает отлично. Теперь я хочу использовать ту же схему в ReactiveCrudRepository.
Спасибо за любые предложения 😀
Ответ №1:
Это может помочь увидеть полную трассировку стека и узнать, какую версию вы используете.
В Java вы можете просто сделать отчет не абстрактным. Разве это не работает в Android?
Спасибо,
- Майк