【发布时间】:2022-01-11 15:07:33
【问题描述】:
我的实体是这样设置的:
客户
@Entity
@Table(name = "client")
public class Client {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@OneToMany(mappedBy = "client")
@JsonManagedReference
private List<Project> projects;
}
项目
@Entity
@Table(name = "project")
public class Project {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@ManyToOne(name= "client")
@JsonBackReference
private Client client;
@OneToMany(mappedBy = "project")
@JsonManagedReference
private List<Listing> listings;
}
上市
@Entity
@Table(name = "listing")
public class Listing{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
@ManyToOne(name= "project")
@JsonBackReference
private Project project;
}
目前,如果我通过 ID 呼叫特定客户,那么我将获得客户、他们的项目以及该项目的列表。这可以正常工作。但是,当我通过 ID 调用项目时,我只会得到该项目的列表,我还想知道哪个客户拥有该项目。同样,当我通过 ID 调用列表时,我只收到具有该 ID 的列表,我还想要拥有该列表的项目以及拥有它的客户,这可能吗?谢谢。
【问题讨论】:
-
有很多关于 JsonBackReference 的教程(参见baeldung.com/…)表明它将被排除在 JSON 之外 - 所以它不会按照你想要的方式运行。包含客户端将序列化其所有项目,因此您不妨直接获取客户端本身,因为它将将此项目包含在其项目中。
标签: java database hibernate jpa spring-data-jpa