无法在 spring-boot 2.1.x 中为 mongoDb 实体使用 @JsonTypeInfo

问题描述

我现有的代码在 spring mongo 1.9.4.RELEASE 版本中运行良好。 现在将其迁移到 2.2.1.RELEASE 版本,但我遇到了 @JsonTypeInfo 问题。

以下是示例代码

BaseInterface.java

@JsonTypeInfo(use = Id.NAME,include = JsonTypeInfo.As.EXISTING_PROPERTY,property = "ty")
@JsonSubTypes(value = {
    @JsonSubTypes.Type(value = Featured.class,name = "Featured")
})
public interface BaseInterface {
 
  String getType(); 

}

精选类

public class Featured implements BaseInterface {

 @JsonProperty("ty")
 private String type;

 public String getType() {
   return type;
 }

 public void setType(String type) {
  this.type = type;
 }
}

Entity1.class

@Data
public class Entity1 {

  @Id
  private String id;

  private BaseInterface base;
  
}

数据库入口

{
   "_id" : ObjectId("59d5e9eae4b0af676ead23ed"),"base" : {
              "_class" : "com.test.Featured","type" : "Featured"
            }
}

异常:

org.springframework.data.mapping.model.MappingInstantiationException: 使用带参数的构造函数 NO_CONSTRUCTOR 实例化失败

引起:org.springframework.beans.BeanInstantiationException: 无法实例化 [BaseInterface]:指定的类是一个接口

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...