Я создаю REST API с Spring 2.1, и я получаю повторяющиеся данные для консультации с отношениями 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> (кстати, вместо этого вы можете просто использовать List<Localidad>) следующим образом:
@OneToMany(mappedBy= "provincia", cascade = CascadeType.ALL, fetch =
FetchType.LAZY)
@JsonIgnoreProperties("provincia")
private Set<Localidad> localidades = new HashSet<Localidad>();
С этими изменениями ваш Rest API теперь не должен показывать дубликатов. Вы должны игнорировать поля, которые определяют связь между двумя классами или сущностями. Если вы использовали @JsonProperty для определения имен полей, используйте имена, используемые в определении @JsonProperty для @JsonIgnoreProperties.