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
我该如何修复它?
| 归档时间: |
|
| 查看次数: |
1012 次 |
| 最近记录: |