我有一個包含子代和父代的自引用實體。我有一個連接表來存儲相互排斥的兄弟姐妹。當在數據庫中創建的實體,我得到這個例外...JPA與兄弟連接表相關的自引用實體
造成的:org.springframework.orm.jpa.JpaSystemException:org.hibernate.PersistentObjectException:通過堅持
主表脫離實體將有
ID Text Parent
1 ABC null
2 CBD 1
3 XYZ 1
加入表應該有
entity sibling
2 3
是實體映射關係是否正確?
@Entity
public class TestEntity {
@id
@GeneratedValue
private int id;
private String Text;
@ManyToOne
private TestEntity parent;
@OneToMany(cascade=CascadeType.ALL)
@JoinTable(name="mutuallyExclusiveSiblings",
joinColumns={@JoinColumn(name="entity", referencedColumnName="id")},
inverseJoinColumns={@JoinColumn(name="sibling", referencedColumnName="id")})
private Set<TestEntity> exclusiveSiblings;
}
任何幫助實現這一點表示讚賞。謝謝。
您可能想要發佈用於保存實體的代碼片段。 – tmarwen
您在分離的實體上(即在已經有ID的實體上)調用persist()。那就是問題所在。 –
對不起,由於專有機密信息問題,我無法發佈實際代碼......在這裏是上述示例的代碼。謝謝你的幫助。 TestEntity te = new TestEntity(); (3)te.setId(4); te.setParent(null); Set exsib = new HashSet (); (exsib); te.setExclusiveSiblings(exsib); List ret = new ArrayList (); ret = testEntityService.getByText(「XXX」); (TestEntity t:ret){ te.getExclusiveSiblings()。add(t); } testEntityService.createRecord(te); –
user3154305