Я новичок ie в загрузке Spring (но работал в Laravel). Я сталкиваюсь с проблемой избыточности циклических c в отношении @ManyToMany. Давайте рассмотрим сценарий go -
Какой ответ я получаю (выбирая список пользователей, который имеет много-много связей с ролями) -
Ниже приведена ER-диаграмма связанных таблиц для управления отношениями "многие ко многим" между таблицами users
и roles
.
Пользовательский класс сущности имеет следующий код -
@Entity
@Where(clause = "deleted_at IS NULL")
@SQLDelete(sql = "UPDATE users SET deleted_at = CURRENT_TIMESTAMP WHERE id = ?", check = ResultCheckStyle.COUNT)
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "users")
@JsonIgnoreProperties(
value = {"createdAt", "updatedAt", "deletedAt"}
)
public class User {
@Id
@Column(name = "id", updatable = false, nullable = false)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "name", nullable = false)
@NotBlank(message = "Name field can not be empty")
private String name;
.....
.....
.....
@ManyToMany(targetEntity = Role.class, fetch = FetchType.EAGER)
@JoinTable(name = "user_roles",joinColumns = @JoinColumn(name = "user_id"),
inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles;
}
А роль сущности выглядит следующим образом -
@Entity
@Table(name = "roles")
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@SQLDelete(sql = "UPDATE roles SET deleted_at = CURRENT_TIMESTAMP WHERE id = ?", check = ResultCheckStyle.COUNT)
@Where(clause = "deleted_at IS NULL")
@JsonIgnoreProperties(
value = {"createdAt", "updatedAt", "deletedAt"}
)
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", updatable = false, nullable = false)
private long id;
@Column(name = "title")
@NotBlank(message = "Title field must be not null")
private String title;
......
......
......
@OneToMany(targetEntity = User.class, fetch = FetchType.EAGER)
@JoinTable(name = "user_roles",joinColumns = @JoinColumn(name = "role_id"),
inverseJoinColumns = @JoinColumn(name = "user_id"))
private List<User> users;
}
Как решить эту проблему? Что я тут не так делаю?