我在实体中有一个JPA瞬态属性,它具有基于POJO中多个字段的计算值。所有这些计算都是在该属性的GETTER中完成的。
但是,杰克逊在为该POJO创建JSON时似乎没有使用GETTER。
如何配置Jackson使用getter作为属性?
我的POJO看起来像下面的
@Entity
public class ProductSummaryEntity implements Serializable {
@Basic
private String field1;
// GETTER and SETTER for Field1
@Basic
private String field2;
// GETTER and SETTER for Field2
@Transient
private String field3;
public String getField3(){
setField3(field1 + field2);
return this.field3;
}
public void setField3(String temp){
this.field3=temp;
}
}
答案 0 :(得分:1)
@sghill发布的博客链接已在SO上发布,并向您展示如何自定义序列化过程:https://www.sghill.net/how-do-i-write-a-jackson-json-serializer-deserializer.html
基本上,使用@JsonSerialize(using = CustomSerializer.class)
注释您的POJO,然后实现从CustomSerializer
延伸的课程JsonSerializer
。在您的实现中,您可以根据需要构建JSON并动态计算值或调用getter。
答案 1 :(得分:0)
不,我不认为你可以序列化瞬态场,除非有最新的东西。