Spring 引导 REST 仅在 JSON 响应中显示父级的 ID

Spring Boot REST display id of parent only in a JSON response

假设我有以下 class:

public class ChildEntity {

   ...

   @ManyToOne
   private ParentEntity parent;  

   ...

}

现在,我有一个从数据库中检索子实体对象的 REST 端点,因此我的 JSON 如下:

{"id": "123", "name":"someName", "parent": { //parent fields here } ... }

我想以另一种方式格式化我的 JSON 回复。我希望父级仅显示数据库中的 ID,而不是整个对象:

{"id": "123", "name":"someName", "parentId": "1" ... }

基本上直接从端点返回实体不是一个好主意。您在数据库模型和响应之间建立了非常紧密的耦合。相反,实现一个 POJO class,它将等同于您发送的 HTTP 响应。

此 POJO 将具有所有 ChildEntity 字段和仅 parentId 并将在 HTTP 层中构建。

请看评论中的讨论,基本上这样一个从web层返回的对象在我看来不是DTO。

我注释@JsonIgnore 我不想成为 JSON 响应的一部分的字段。为每个实体创建并行 POJO 是一件代价高昂的事情。

@JsonIgnore
@NotNull
@Column(name="DELETED")
private boolean deleted = false;