首页 > 解决方案 > 弹簧数据休息。子类处理

问题描述

我尝试发布对象

    {
        "id": "SOME_ID",
        "foo": "http://localhost:8080/api/subclass-of-foo/OBJECT_ID"
    }

Foo类是抽象的。有关具体类的信息在链接中subclass-of-foo。但我总是得到“无法构造实例Foo(没有创建者,如默认构造,存在):抽象类型要么需要映射到具体类型,要么具有自定义反序列化器,要么包含其他类型信息”。

我不能使用@JsonDeserialize(as = Subclass.class)on Foo,因为Foo.

我可以在哪里以及如何提供这些信息来解决问题?

@Entity
@Inheritance(strategy = SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = STRING)
class abstract Foo {
  private id;
}

class Bar1 extends Foo {

}

class Bar2 extends Foo {

}

class Bar3 extends Foo {

}

@Entity
class X {
   private String id;

   @OneToOne
   private Foo foo;

}

和 json 有效载荷来 POST 一个 X 对象:

    {
        "id": "X_ID",
        "foo": "http://localhost:8080/api/bar1/Bar1_ID"
    }

标签: spring-data-restjackson-databind

解决方案


推荐阅读