При запросе в Postman'e
personwithcars?personid={personId}
Получается цикл:
{"id":1,"name":"Eliah","birthdate":"03.08.1995","cars":[{"id":1,"model":"BMW-X5","horsepower":250,"owner":{"id":1,"name":"Eliah","birthdate":"03.08.1995","cars":[{"id":1,"model":"BMW-X5","horsepower":250,"owner":{"id":1,"name":"Eliah","birthdate":"03.08.1995","cars":[{"id":1,"model":"BMW-X5","horsepower":250,"owner":
Сущность Car:
package ru.lanit.rest.model;
import org.codehaus.jackson.annotate.JsonManagedReference;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Objects;
@Entity
@Table(name="car")
public class Car implements Serializable {
@Id
@NotNull
private Long id;
@Column(name = "model")
@NotNull
private String model;
@Column(name = "horse_power")
@NotNull
private Integer horsepower;
@NotNull
@JsonManagedReference
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "owner_id")
private Person owner;
@NotNull
@Column(name = "ownerid")
private Long ownerId;
public Long getOwnerId() {
return ownerId;
}
public void setOwnerId(Long ownerId) {
this.ownerId = ownerId;
}
public Car(){}
public Car(Long id, String model, Integer horsepower, Long ownerId){
this.id = id;
this.model = model;
this.horsepower = horsepower;
this.ownerId = ownerId;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getModel() {
return model;
}
public void setModel(String model) {
if(model.matches("^[a-zA-Z0-9]+-[a-zA-Z0-9]+$"))
this.model = model;
}
public Integer getHorsepower() {
return horsepower;
}
public void setHorsepower(Integer horsepower) {
this.horsepower = horsepower;
}
public Person getOwner() {
return owner;
}
public void setOwner(Person owner) {
this.owner = owner;
}
}
Сущность Person:
package ru.lanit.rest.model;
import org.codehaus.jackson.annotate.JsonBackReference;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Set;
@Entity
@Table(name="person")
public class Person implements Serializable {
@Id
@NotNull
private Long id;
@Column(name="name")
@NotNull
private String name;
@Column(name="birthdate")
@NotNull
private String birthdate;
@JsonBackReference
@OneToMany(mappedBy = "owner", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<Car> cars;
public Person(){}
public Person(Long id, String name, String birthdate){
setId(id);
setName(name);
try {
setBirthdate(birthdate);
} catch (ParseException e) {
e.printStackTrace();
}
}
public Person(Long id){
setId(id);
}
public void setCars(Set<Car> cars) {
this.cars = cars;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getBirthdate() {
return birthdate;
}
public void setBirthdate(String birthdate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
sdf.parse(birthdate);
this.birthdate = birthdate;
}
public Set<Car> getCars() {
return cars;
}
}
Пытался писать свой метод toString()
, использовать аннотации @JsonBackReference
и @JsonManagedReference
, а так же просто @JsonIgnore
. При последнем список машин не отображается вовсе, а при остальных цикл не пропадает.
Вопрос: как избавится от зацикливания?
Использовал DTO (Data Transfer Object): закинул переменные, которые необходимо было показать при GET запросе и возвращал этот Объект.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
В общем, не могу разобраться как сделать что-бы в файл записывался результат каждого цикла, а не последнего, подскажите, пожалуйста, как можно...
Использую следующую конструкцию
Подскажите, почему на iPhone шрифт номеров телефонов в подвале сайта мелкий, хотя свойствами он стоит больше гораздоЧерез проверку через браузер...