为了账号安全,请及时绑定邮箱和手机立即绑定

使用级联的实体映射似乎不起作用

使用级联的实体映射似乎不起作用

慕村225694 2021-08-13 15:39:50
我有以下情况:组织实体.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;}但两者似乎都不起作用。我仍然遇到同样的错误。但我认为这实际上应该有效。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信