Hibernate 保存双向关系对象

Hibernate 保存双向关系对象,hibernate,jpa,Hibernate,Jpa,我在使用Hibernate持久化实体权限时遇到问题。我需要保存许多权限对象,这些对象有一个属性组(外键),但在保存权限的同时,我也在保存组,因此我没有要在权限对象中设置的组ID(主键)来建立关联 我的关系: @Entity @BatchSize(size = 10) public class Group implements Serializable { @OneToMany(cascade = CascadeType.ALL, mappedBy = "grupo") @Jso

我在使用Hibernate持久化实体权限时遇到问题。我需要保存许多权限对象,这些对象有一个属性组(外键),但在保存权限的同时,我也在保存组,因此我没有要在权限对象中设置的组ID(主键)来建立关联

我的关系:

@Entity
@BatchSize(size = 10)
public class Group implements Serializable {

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "grupo")
    @JsonIgnore
    private List<Permissao> permissoes;
}

@Entity
@BatchSize(size = 10)
public class Permission implements Serializable {

    @ManyToOne
    private Grupo grupo;
}

有人能给我一个提示吗?

首先,当您使用JPA/Hibernate时,您使用的是对象。您不需要为权限对象设置组id,只需将其传递给组实例即可

现在,根据您的映射,您在组中的权限列表上有一个级联,因此您应该保存组,它应该可以正常工作。
如果您试图在不先保存组的情况下保存权限,则可能会出现TransientObject异常。

或者,您也可以使用从权限到组的级联,这样,当您保存属于新组的新权限时,该组也将被持久化:

@ManyToOne(cascade=CascadeType.PERSIST)
private Group group;

向我们展示您的代码,以及您得到的异常的堆栈跟踪。您只需要保存组,然后将组分配给权限(反之亦然),然后保存权限。好的,我明白了,您建议我分两步完成吗?
@ManyToOne(cascade=CascadeType.PERSIST)
private Group group;