У меня проблема с методом записи в Spring. Когда я пытаюсь отправить объект в базу данных, клиентское приложение зависает, и мне нужно прекратить его. Размещение объекта с помощью curl работает нормально. Я получаю журнал:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: java.util.ArrayList[0]->dareq.Point["points"]->java.util.ArrayList[0]->dareq.Point["points"]->java.util.ArrayList[0]->dareq.Point["points"]->java.util.ArrayList[0]->dareq.Point["points"]
Клиентская сторона:
Класс балла:
@JsonIgnoreProperties(ignoreUnknown=true)
public class Point {
private Long id;
private List<String> bssid = new ArrayList<>();
private List<Double> rssi = new ArrayList<>();
private double x;
private double y;
public Point()
{
}
public Point(Long id, List<String> bssid, List<Double> rssi, double x, double y){
this.id = id;
this.bssid = bssid;
this.rssi = rssi;
this.x = x;
this.y = y;
}
public long getid(){
return id;
}
public void setId(Long id) { this.id=id; }
public List<String> getbssid(){
return bssid;
}
public void setbssid(List<String> bssid)
{
this.bssid=bssid;
}
public List<Double> getrssi(){
return rssi;
}
public void setrssi(List<Double> rssi)
{
this.rssi=rssi;
}
public Double getx(){
return x;
}
public void setx(Double x){
this.x=x;
}
public Double gety(){
return y;
}
public void sety(Double y){
this.y=y;
}
public List<Point> getPoints()
{
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<List<Point>> pointResponse = restTemplate.exchange("http://naviserv-env-1.4jdgmueexz.us-east-2.elasticbeanstalk.com/points/", HttpMethod.GET, null,
new ParameterizedTypeReference<List<Point>>()
{});
List<Point> points = pointResponse.getBody();
return (points);
}
public Point getPoint(long id)
{
RestTemplate restTemplate = new RestTemplate();
Point point = restTemplate.getForObject("http://naviserv-env-1.4jdgmueexz.us-east-2.elasticbeanstalk.com/points/" + id, Point.class);
return point;
}
public void postPoint()
{
RestTemplate restTemplate = new RestTemplate();
restTemplate.postForObject("http://naviserv-env-1.4jdgmueexz.us-east-2.elasticbeanstalk.com/points", this, this.getClass());
}
public void deletePoint(Long id)
{
RestTemplate restTemplate = new RestTemplate();
restTemplate.delete("http://localhost:5000/points/" + id);
}
@Override
public String toString() {
return "Point{" +
"id='" + id + '\'' + ", " +
"bssid='" + bssid + '\'' + ", " +
"rssi='" + rssi + '\'' + ", " +
"x='" + x + '\'' + ", " +
"y='" + y + '\'' +
'}';
}
}
Сторона сервера:
Контроллер:
@PostMapping("/points")
Points newPoints(@RequestBody Points newPoints){
return repository.save(newPoints);
}
Класс очков:
@Data
@Entity
public class Points {
private @Id @GeneratedValue Long id;
@Column
@ElementCollection
private List<String> bssid;
@Column
@ElementCollection
private List<Double> rssi;
private double x;
private double y;
Points (){
};
Points(List<String> bssid, List<Double> rssi, double x, double y){
this.bssid=bssid;
this.rssi=rssi;
this.x=x;
this.y=y;
}
}
Проверка журналов на сервере AWS, когда я пытаюсь разместить объект на клиенте, вызываются многие методы get:
78.28.26.200 - - [07/Jan/2019:00:34:31 +0000] "GET /points/ HTTP/1.1" 200 87 "-" "Java/1.8.0_172" "-"
78.28.26.200 - - [07/Jan/2019:00:34:32 +0000] "GET /points/ HTTP/1.1" 200 87 "-" "Java/1.8.0_172" "-"
78.28.26.200 - - [07/Jan/2019:00:34:32 +0000] "GET /points/ HTTP/1.1" 200 87 "-" "Java/1.8.0_172" "-"
78.28.26.200 - - [07/Jan/2019:00:34:32 +0000] "GET /points/ HTTP/1.1" 200 87 "-" "Java/1.8.0_172" "-"
78.28.26.200 - - [07/Jan/2019:00:34:32 +0000] "GET /points/ HTTP/1.1" 200 87 "-" "Java/1.8.0_172" "-"
Я буду очень признателен за любую помощь. Спасибо