Как избежать ошибки переполнения с рекурсивными сущностями [Hibernate 5, MySQL 8] - PullRequest
0 голосов
/ 23 октября 2019

Моя проблема состоит в том, как извлечь рекурсивную таблицу в поле сущности без получения «Исключение произошло в целевой виртуальной машине: java.lang.StackOverflowError»

У меня есть класс Activity, который реализует рекурсивную таблицу:

@Entity
@Table(name = "activities")
public class Activity {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "activity_id")
    private Long id;

    @NotBlank
    @Column(name = "name")
    private String name;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "parent_id")
    private Activity parent;

    @OneToMany(mappedBy="parent", cascade = CascadeType.ALL)
    private Set<Activity> childs;

    @Override
    public String toString() {
        return "";
    }
}

и класс разрешений, который имеет отношения многие ко многим:

@Entity
@Table(name = "permissions")
public class Permission {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "permission_id")
    private Long id;

    @NotBlank
    @Column(name = "name")
    private String name;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "created_at")
    private Date createdAt;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "updated_at")
    private Date updatedAt;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "permission_activity", joinColumns = @JoinColumn(name = "permission_id"), inverseJoinColumns = @JoinColumn(name = "activity_id"))
    private Set<Activity> activities;

}

Я использую абстракцию JpaRepository для загрузки данных базы данных, когда пытаюсь получить доступ к действиямподал это идет к ошибке OverFlow. Это еще один способ напрямую задать именованный запрос, когда дело доходит до извлечения поля действий?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...