我有以下情況:組織實體.java@Entity@Table(name = "organisation")public class OrganisationEntity { // ... private PersonEntity contactPerson; // ... @OneToOne @JoinColumn(name = "contact_person_id", referencedColumnName = "id", nullable = false) public PersonEntity getContactPerson() { return contactPerson; } public void setContactPerson(PersonEntity contactPerson) { this.contactPerson = contactPerson; } // ...}聯系人.java@Entity@Table(name = "person")public class PersonEntity { private int id; // ... @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id", nullable = false) public int getId() { return id; } public void setId(int id) { this.id = id; } // ...}在數據庫上,表 Organization 有一個指向 Person 的不可為空的外鍵。實體映射是單向的 New 當我想要持久化一對新記錄(一個組織和一個人)時merge,OrganisationEntity我收到以下錯誤:17:10:19.827 WARN [http-nio-8080-exec-2] [org.hibernate.action.internal.UnresolvedEntityInsertActions] [144] HHH000437:試圖保存一個或多個與未保存對象有不可空關聯的實體瞬態實體。在保存這些依賴實體之前,必須在操作中保存未保存的瞬態實體。未保存的瞬態實體:([ch.freiwilligenarbeit_sempach.entity.PersonEntity#0])附屬實體:([[ch.freiwilligenarbeit_sempach.entity.OrganisationEntity#]])不可為空的關聯:([ch.freiwilligenarbeit_sempach.entity.OrganisationEntity.contactPerson])這對我來說非常有意義,因為它試圖插入組織而不涉及任何人。所以我通常會定義一個級聯行為,以便 hibernate 首先插入人,設置引用和組織,然后持久化組織。我在組織實體上嘗試了以下操作:@OneToOne(cascade = CascadeType.ALL)@JoinColumn(name = "contact_person_id", referencedColumnName = "id", nullable = false)public PersonEntity getContactPerson() { return contactPerson;}和@OneToOne@JoinColumn(name = "contact_person_id", referencedColumnName = "id", nullable = false)@Cascade(org.hibernate.annotations.CascadeType.ALL)public PersonEntity getContactPerson() { return contactPerson;}但兩者似乎都不起作用。我仍然遇到同樣的錯誤。但我認為這實際上應該有效。
添加回答
舉報
0/150
提交
取消