Spring Data JPA бесконечная рекурсия - PullRequest
0 голосов
/ 26 февраля 2019

Я видел эту проблему повсюду, и пока я следовал их решениям, и она исправила мою проблему, я не очень понимаю, что происходит.Мои объекты:

@Entity
public class ItemInOrder {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    Long id;

    @ManyToOne
    Bill bill;

    String comment;
}

@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.UUIDGenerator.class, property="@id")
    public class Bill {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        int id;

        @OneToOne
        Table table;



        @OneToMany(mappedBy = "bill")
        List<ItemInOrder> itemi_vo_naracka = new ArrayList<>();
    }

@Entity
@JsonIdentityInfo(generator=ObjectIdGenerators.UUIDGenerator.class, property="@id")
public class Table {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    int id;

    @OneToOne
    Bill order_na_ovaa_masa;
}

Моя ошибка возникает, когда я вызываю базовый метод репозитория JPA, чтобы найти все ItemsInOrder:

return itemInOrderService.getAllItemsInOrder();


The exception says that the infinite loop is happening between Table and Bill:
Infinite recursion (StackOverflowError) (through reference chain: bla.bla.domain.Bill["table"]->bla.bla.domain.Table["order_na_ovaa_masa"]-> and so and so on..
  • Так может кто-нибудь объяснить мне, что происходило до того, как я добавил @JsonIdentityInfo (generator = ObjectIdGenerators.UUIDGenerator.class, property = "@ id") над моими объектами, и что происходит после этого.

    Я прочитал несколько объяснений, но я не совсем понимаю, что происходит со всей этой сериализацией и десерализацией.Если объяснение слишком длинное, подойдет также руководство или ссылка на пост, в котором оно хорошо объяснено (для начинающего во всем этом).Спасибо!

...