我有以下情况:组织实体.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
提交
取消