Spring Boot REST仅在JSON响应中显示父级的id

时间:2015-06-17 10:32:14

标签: json spring rest spring-boot

假设我有以下课程:

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" ... }

2 个答案:

答案 0 :(得分:1)

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

此POJO仅包含所有ChildEntity个字段和parentId,并将在 HTTP 层中构建。

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

答案 1 :(得分:0)

我正在注释@JsonIgnore哪个字段我不想成为JSON响应的一部分。为每个实体创建并行POJO是非常昂贵的事情。

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