如何忽略BaseEntity
类中用于继承的3个时间戳字段,使其不被控制器返回。
- 不从DB完全返回它们也是一种选择。
public abstract class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id", updatable = false, nullable = false)
private UUID id;
@JsonIgnore
@CreatedDate
@Column(name = "created_at", updatable = false)
private Date createdAt;
@JsonIgnore
@LastModifiedDate
@Column(name = "updated_at")
private Date updatedAt;
@JsonIgnore
@JsonIgnore
@Column(name = "deleted_at")
private Date deletedAt;
}
字符串
正如你所看到的,我尝试使用:
@JsonIgnore
作为字段注解(com.fasterxml.Jackson.annotation.JsonIgnore)@JsonIgnoreProperties
作为字段注解@JsonIgnoreProperties({"createdAt", "updatedAt", "deletedAt"})
作为类注解- 禁用
spring.jackson.serialization.FAIL_ON_EMPTY_BEANS
@Transient
似乎是“createdAt”的错误选项,因为这需要持久化。
- edit *:我使用Spring 3(spring-boot-starter-data-jpa:3.0.5)
2条答案
按热度按时间zaq34kh61#
要排除返回的时间戳字段(createdAt、updatedAt和deletedAt),可以在类级别使用@JsonIgnoreProperties注解。
应该可以
字符串
iqjalb3h2#
@JsonIgnoreProperties应该可以工作,但是你应该在子类上使用这个注解,而不是在基类上。
字符串
您也可以使用Mix-ins与对象Map器,如这里所述-> Inheritance in Jackson