【发布时间】:2018-12-23 02:41:29
【问题描述】:
@JsonIgnore
@ManyToMany(mappedBy = "projects")
private List<User> users = new ArrayList<>();
public List<User> getUsers(){
return users;
}
public void setUsers(List<User> users){
this.users =users;
}
many to many relationships between users and project...
@ManyToMany(fetch = FetchType.EAGER,cascade = {CascadeType.ALL})
@JoinTable(
name = "user_project",
joinColumns = {@JoinColumn(name = "userid")},
inverseJoinColumns = {@JoinColumn(name="projectid")}
)
private List<Project> projects = new ArrayList<>();
public List<Project> getProjects(){
return this.projects;
}
public void setProjects(List<Project> projects){
this.projects = projects;
}
我想在项目实体和用户实体之间创建多对多关系。
当我的控制器调用项目控制器的方法时,我想获取与项目关联的所有用户。同样,当我想获取用户时,我想获取与该用户关联的所有项目。我正在构建一个 REST Web 应用程序。
如果我不使用 @JsonIgnor 注释,则会收到堆栈溢出错误。
但是,如果我在“项目实体”中使用它,那么我不会得到与之关联的所有用户。
有什么解决办法吗?
【问题讨论】:
-
第一个(首选)解决方案:不要将持久性模型用作 API 模型。设计特定对象 (DTO),其中包含您想要作为对 REST 请求的响应而返回的内容,并将其发送回而不是您的实体。将您的实体转换为控制器中的这些对象。第二种解决方案:使用 Jackson 视图。
-
如果我创建一个 DTO 并返回 @JSONIgnore 的对象,它会返回到客户端吗?
标签: hibernate spring-mvc spring-boot spring-data-jpa