Я получаю StackOverFlowException
при получении набора сущностей в ManyToMany
отношениях.
Исключение выдается в слое отображения с использованием ModelMapper
(использование @JsonIgnore
не решило проблему). Тем не менее, при отладке я могу видеть переполнение стека в поле коллекции.
Вот мой код:
@Getter
@Setter
@Entity
@Table(name = "a_child")
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AChildEntity extends AbstractEntity{
@Column(nullable = false, length = 255)
private String name;
@Column(length = 1024)
private String description;
@Column(nullable = false)
private BigDecimal value;
@ManyToMany(mappedBy = "a_child")
private final Set<AnocherChildEntity> menu = new HashSet<>();
}
@Data
@Entity
@Table(name = "another_child")
@SuperBuilder
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class AnotherChildEntity extends AbstractEntity{
@Column(length = 255)
private String name;
@ManyToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(name = "another_child_a_child",
joinColumns = @JoinColumn(name = "another_child_id"),
inverseJoinColumns = @JoinColumn(name = "a_child_id")
)
private final Set<AChildEntity> aChild = new HashSet<>();
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "other_id")
private OtherEntity other;
}
В моем PersistenSet
я получаю:
Exception occurred: com.sun.jdi.InvocationException occurred invoking method..
и отображение сбоев с несколькими похожими сообщениями в журнале консоли:
at java.util.AbstractCollection.addAll(AbstractCollection.java:344) ~[na:1.8.0_181]
at org.hibernate.collection.internal.PersistentSet.endRead(PersistentSet.java:355) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollection(CollectionLoadContext.java:236) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:223) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.engine.loading.internal.CollectionLoadContext.endLoadingCollections(CollectionLoadContext.java:196) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.loader.plan.exec.process.internal.CollectionReferenceInitializerImpl.endLoading(CollectionReferenceInitializerImpl.java:154) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishLoadingCollections(AbstractRowReader.java:249) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]
at org.hibernate.loader.plan.exec.process.internal.AbstractRowReader.finishUp(AbstractRowReader.java:212) ~[hibernate-core-5.3.7.Final.jar:5.3.7.Final]