【发布时间】:2020-06-06 23:46:13
【问题描述】:
帮我找到 JSON 属性注释,让我为 JSON 序列化选择一个实体属性。我只需要一个。
我是这样编码的:
@Entity
@Table(name = "pages")
public class Page {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
@Column(name = "name")
private String name;
@JsonIgnoreProperties(value = {"name", "description", "pages"}) // it's working, but I want to simplify, I need only project id property to JSON
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "project_id")
private Project project;
//getters and setters
}
及项目实体:
@Entity
@Table(name = "projects")
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "project_id")
private Long id;
@Column(name = "project_name")
private String name;
@Column(name = "description")
private String description;
@OneToMany(targetEntity = Page.class, mappedBy = "project", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OrderBy("id")
private List<Page> pages = new ArrayList<>();
}
而 JSON 应该是:
{
"id": 10,
"name": "Name",
"project": {"id":1}
}
【问题讨论】:
-
欢迎来到 SO!你的问题不清楚。也许您可以包含一个示例 JSON?不确定您要做什么。
-
谢谢,我包含了项目实体和 JSON。
-
在类级别的项目中包含 @JsonIgnoreProperties(value = {"name", "description", "pages"})。此外,如果您可以将实体和 dto 分开会更好,它可以使代码更清晰,更好地分离。
-
除了@Code_Is_Law 建议的内容外,您还可以在要忽略的字段上使用
@JsonIgnore注解。虽然我也会推荐@Code_Is_Law 的解决方案。 -
@Code_Is_Law,我喜欢将实体和 dto 分开的想法。我想了想,我认为这可能就像实现代理模式一样。
标签: json spring-boot spring-data-jpa entity many-to-one