为了在 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
我该如何解决?