与Hibernate / JPA的循环关系

时间:2018-02-28 01:00:03

标签: java hibernate jpa

我有以下课程

@Entity
public class Auditable {
    @Id
    long id;

    @ManyToOne(optional=false, cascade=CascadeType.PERSIST)
    Audit a;
    ......
}

@Entity
public class Actor extends Auditable {
....
}

@Entity
public class AnotherEntity extends Auditable {
.....
}


@Entity
public class Audit {
    @Id
    long id;

    @ManyToOne(optional=false, cascade=CascadeType.PERSIST)
    Actor b;
.....
}

数据库中的每条记录都引用了“审核”对象。审计对象具有对创建审计的参与者的引用。由于可以创建/修改演员,因此它也可以引用审计。

因此是循环依赖。

Hibernate不喜欢这个

Hibernate失败并出现以下错误:

  

尝试保存与未保存的瞬态实体具有非可空关联的一个或多个实体。在保存这些依赖实体之前,必须将未保存的瞬态实体保存在操作中。

建议?

1 个答案:

答案 0 :(得分:0)

在持久化两个对象之前,手动设置ID。