我正在尝试设置继承时序列化属性的顺序。
我有一个@MappedSuperClass,BaseEntity,ID,creationDate,modificationDate,creationUser,modificationUser。
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
@Id
@Column(nullable = false, updatable = false)
@GenericGenerator(name = "db-uuid", strategy = "guid")
@GeneratedValue(generator = "db-uuid")
protected String id;
@NotNull
@PastOrPresent
@Column(nullable = false, updatable = false)
protected Date creationDate;
@PastOrPresent
protected Date modificationDate;
protected String creationUser;
protected String modificationUser;
字符串
并且每个实体都从这个实体扩展。例如
@Entity(name = "Technician")
public class AsnTechnician extends BaseEntity {
private String name;
private String sex;
}
型
当Jackson序列化这个对象时,顺序是:{id, creationDate, modificationDate, creationUser, modificationUser, name, sex}
。我想要类似于:{id, name, sex, creationDate, modificationDate, creationUser, modificationUser}
这里的问题是,使用继承,我不知道如何正确地管理属性的顺序。有没有一种方法可以做到这一点,而不必在每个扩展BaseEntity的实体中声明它?
我知道这并不重要,这只是为了可读性!而且,我知道我应该使用DTO作为控制器的输出,而不是实体,这将在稍后进行。
我在id下尝试了@JsonProperty(index=1)
,效果很好。但是我不知道如何告诉Jackson其他的应该放在最后一个。尝试了@JsonProperty(index=99)
等,但是不起作用,它们在id
之后和AsnTechnician
属性之前
有没有一种方法可以告诉Jackson有一些属性(父类的),我想成为第一个(id)和最后一个(creationDate)?
1条答案
按热度按时间rvpgvaaj1#
使用@JsonPropertyOrder对Json元素进行排序。另外,确保BaseEntity和Entity都有Getter和Setter。
字符串