在JPA实体类和Rest API响应类中避免不必要的关系。可以使用@JsonIgnore或@JsonManagedReference和@JsonBackReference注释来控制响应和关系的方向。下面是示例代码:
JPA实体类中使用@JsonManagedReference和@JsonBackReference注释:
@Entity public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonManagedReference
private List orders = new ArrayList<>();
// ...
}
@Entity public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
@JsonBackReference
private User user;
// ...
}
使用@JsonIgnore注释:
@Entity public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIgnore
private List orders = new ArrayList<>();
// ...
}
在Rest API响应类中使用@JsonIgnore注释:
public class UserDto {
private Long id;
private String name;
@JsonIgnore
private List orders = new ArrayList<>();
// ...
}
这些注释可帮助您避免在Rest API响应中不必要的关系。