有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

已存在子级的java持久化实体

我正在尝试将新实体父实体与数据库中已存在的子实体持久化。我不想在父对象持久化期间更新子对象,只想创建一个关系。当我从前端发送json时,如下所示:

{“child”:{“id”:3}

在保存时,我得到:

org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance before flushing

@Entity
class Parent {
    @ManyToOne(optional = false)
    @JoinColumn(name = "CHILD_ID", referencedColumnName = "CHILD_ID")
    private Child child;
}

@Entity
class Child {
    @Id
    @Column(name="CHILD_ID")
    private Long id;
}

共 (3) 个答案

  1. # 1 楼答案

    不能。请将@manyToOne注释的可选属性设置为true,或者检索子对象的代理实例并将其设置为父对象

  2. # 2 楼答案

    @Entity
    class Parent {
        @ManyToOne(optional = false,  cascade = CascadeType.SAVED_UPDATE)
        @JoinColumn(name = "CHILD_ID", referencedColumnName = "CHILD_ID")
        private Child child;
    }
    
  3. # 3 楼答案

    使用child_id加载现有子对象,然后将其设置为“注入父对象”和“保存父对象”