如何使用jpa在postgresql中将继承类列表保存为json?

Mor*_*ndi 5 java jackson spring-boot postgresql-json jackson-databind

为了在 postgresql 中保存 json 格式的列表,我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
}
Run Code Online (Sandbox Code Playgroud)

有了这个,一切都OK了,我可以将位置保存为postgresql中的json。但我想将位置保存为类继承结构。课程如下:

@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>{}
Run Code Online (Sandbox Code Playgroud)

现在我想将此结构保存在 Profile 类的 json 中,如下所示:

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

    // getters & setters
}
Run Code Online (Sandbox Code Playgroud)

当我创建一个 Profile 实例并且不保存时,将其返回给客户端,这很好,但是当我想保存到 postgresql 数据库时,出现错误,错误消息是:

java.lang.IllegalArgumentException:无法为具有 1 个类型参数的类 LocationList 创建 TypeBindings:类需要 0

我该如何修复它?