Весенние данные REST. Обработка подклассов

Я пытаюсь опубликовать объект

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

Класс Foo является абстрактным. Информация о конкретном классе находится по ссылке subclass-of-foo. Но я всегда получаю «Невозможно создать экземпляр Foo (не существует создателей, таких как конструкция по умолчанию): абстрактные типы либо должны быть сопоставлены с конкретными типами, иметь настраиваемый десериализатор или содержать дополнительную информацию о типе».

Я не могу использовать @JsonDeserialize(as = Subclass.class) в 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"
    }

person user1648825    schedule 10.05.2019    source источник
comment
Можете ли вы привести краткий пример кода?   -  person Sebastian Ullrich    schedule 13.05.2019
comment
@SebastianUllrich готово. Это достаточно? Или вам нужно больше деталей?   -  person user1648825    schedule 15.05.2019
comment
Мое первое предположение состоит в том, что Foo должен быть @MappedSuperclass. Проверьте здесь baeldung.com/hibernate-inheritance   -  person Sebastian Ullrich    schedule 21.05.2019
comment
@SebastianUllrich Я добавил аннотацию к Foo, чтобы увидеть стратегию наследования, которую я использую.   -  person user1648825    schedule 22.05.2019
comment
Этот раздел может помочь вам: stackoverflow.com/questions/42121506/   -  person Selindek    schedule 12.06.2019