【发布时间】:2020-07-19 11:38:14
【问题描述】:
我知道这个问题被问过很多次,也有解决方法
喜欢 Found shared references to a collection org.hibernate.HibernateException http://www.java2s.com/Questions_And_Answers/JPA/Collection/HibernateException.htm
但以上都不适合我。
我正在使用SpringBoot, JPA, Hibernate
并具有如下提供的映射。
我正在检索电话列表并使用 for 循环对其进行迭代。
我在遍历电话列表时收到错误 Found shared references to a collection: Phone.person
org.hibernate.HibernateException: Found shared references to a collection: Phone.person
at org.hibernate.engine.internal.Collections.processReachableCollection(Collections.java:188) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.event.internal.FlushVisitor.processCollection(FlushVisitor.java:50) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:104) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.event.internal.AbstractVisitor.processValue(AbstractVisitor.java:65) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.event.internal.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:59) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.event.internal.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:182) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:232) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.event.internal.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:92) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) ~[hibernate-core-5.4.10.Final.jar:5.4.10.Final]
映射到Phone 实体
@Entity
@Table(name = "PHONETABLE")
@Data
public class Phone{
// other column mapping
@ManyToMany
@JoinTable(name = "SomeTable", joinColumns = {
@JoinColumn(name = "column1", referencedColumnName = "personColumn") }, inverseJoinColumns = {
@JoinColumn(name = "id", referencedColumnName = "id", unique = true) })
@JsonIgnore
private Set<Person> person;
}
我正在调用findByIdMethod 从存储库中获取数据。
我使用了lombok,因为 getter 是 setter。
如果有人知道解决方案,那就太好了。 谢谢;
【问题讨论】:
-
你能显示你提到的循环,错误发生在哪里吗?
标签: java hibernate spring-boot jpa spring-data-jpa