3

为了在 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
}

有了这个,一切都好,我可以在 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>{}

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

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

    // getters & setters
}

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

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

我该如何解决?

4

0 回答 0