Для сохранения списка в формате json в postgresql я использую com.vladmihalcea:hibernate-types-52 в Spring boot 2 следующим образом:

@Entity
@TypeDefs({
    @TypeDef(name = "jsonb", typeClass = JsonBinaryType.class)
})
public class Profile {
    ...
    @Type(type = "jsonb")
    @Column(columnDefinition = "jsonb")
    private List<String> locations;

    // getters & setters
}

С этим все в порядке, и я могу сохранить местоположения как json в postgresql. Но я хочу сохранить местоположения как структуру наследования классов. Классы следующие:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = As.PROPERTY, property = "type")
@JsonSubTypes({
    @JsonSubTypes.Type(value = SubClass1.class, name = "subClass1"),
    @JsonSubTypes.Type(value = SubClass2.class, name = "subClass2")
})
public abstract class MyClass {
    private String name;
    // getters & setters
}
public class SubClass1 extends MyClass {
    private String prop;
    // getters & setters
}
public class SubClass2 extends MyClass {
    ...
}
public class LocationList extends ArrayList<MyClass>{}

Теперь я хочу сохранить эту структуру в json из класса Profile, как показано ниже:

public class Profile {
    ...
    @Type(type = "jsonb")
    @Column(columnDefinition = "jsonb")
    private LocationList locations;

    // getters & setters
}

Когда я создаю экземпляр Profile и без сохранения возвращаю его клиенту, это нормально, но когда я хочу сохранить в postgresql db, это происходит с ошибкой и сообщением об ошибке:

java.lang.IllegalArgumentException: невозможно создать привязки типов для класса LocationList с параметром типа 1: класс ожидает 0

Как я могу это исправить?

0
Morteza Malvandi