java - JPA ManyToOne/OneToMany 双向获取重复数据
问题描述
我正在使用 Spring 2.1 构建一个 REST API,并且我正在获取重复数据以咨询 ManyToOne 关系。
当地:
@Entity
@Table(name = "localidad")
public class Localidad implements Serializable {
private static final long serialVersionUID = -7258462202419598287L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idLocalidad;
private String nombreLocalidad;
private BigDecimal precioEnvio;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "provinciaIdProvincia")
private Provincia provincia;
public Localidad() {}
public Localidad(String nombreLocalidad, BigDecimal precioEnvio) {
this.nombreLocalidad = nombreLocalidad;
this.precioEnvio = precioEnvio;
}
...
省:
@Entity
@Table(name = "provincia")
public class Provincia implements Serializable {
private static final long serialVersionUID = 3324427184301992595L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idProvincia;
private String nombreProvincia;
@OneToMany(mappedBy= "provincia", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Localidad> localidades = new HashSet<Localidad>();
public Provincia() {}
public Provincia(String nombreProvincia) {
this.nombreProvincia = nombreProvincia;
}
...
我通过实现 CrudRepository 和 Service @Autowired 来访问信息
重复数据 HTTP GET 请求:
谢谢
解决方案
该问题是由杰克逊对provincia
和localidades
字段进行循环序列化引起的。这可以通过使用@JsonIgnoreProperties
注解来解决。所以在Localidad
类或实体中添加注释如下:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "provinciaIdProvincia")
@JsonIgnoreProperties("localidades")
private Provincia provincia;
在Provincia
类中修改Set<Localidad>
(顺便说一句,您可以使用 aList<Localidad>
代替),如下所示:
@OneToMany(mappedBy= "provincia", cascade = CascadeType.ALL, fetch =
FetchType.LAZY)
@JsonIgnoreProperties("provincia")
private Set<Localidad> localidades = new HashSet<Localidad>();
通过此更改,您的 Rest API 现在应该不会显示重复项。您必须忽略定义两个类或实体之间关联的字段。如果您曾经@JsonProperty
定义字段名称,请使用定义中使用的@JsonProperty
名称 @JsonIgnoreProperties
。
推荐阅读
- vue.js - Vue.js & D3.js - 当用户点击 svg 元素时尝试调用 Vue 方法,但它抛出了一个错误
- terraform - 使用模块无法从 terraform_remote_state 获取 vpc_id 以用于其他模块
- data-structures - 有人可以从 Judy 数据结构文档中解释这一行吗?
- automapper - 自动映射到多个子类型
- c# - Microsoft Graph 无效筛选子句
- json - JQ 根据条件删除条目
- sql - 试图找出 OPENJSON 查询的语法并卡住了
- android - CoordinatorLayout 中的 RecyclerView 在数据更改时滚动到顶部
- javascript - 将 React 应用程序的一部分弹出到新窗口中
- winapi - DeviceIoRequest 获取用于 USB 存储的 STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR 失败