假设我有以下课程:
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" ... }
答案 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;