传递的分离实体与ManyToOne col保持一致

时间:2019-01-30 09:09:15

标签: java spring hibernate jpa

我正在尝试运行此基本代码。 模型1。

public class CustomEntity implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@JsonManagedReference
@OneToMany(mappedBy = "customEntity", fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, orphanRemoval = true)
Set<CustomEntitySystem> customEntitySys;

位于CustomEntity下的模型2。

public class CustomEntitySystem implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@ManyToOne
@JsonBackReference
@JoinColumn(name = "CUSTOM_ENTITY_ID")
private CustomEntity customEntity;

@JsonManagedReference
@OneToMany(mappedBy = "customEntitySystem", fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, orphanRemoval = true)
private Set<CustomEntityRole> customEntityRole;

}

现在我们在CustomEntitySystem下拥有第三个模型

public class CustomEntityRole implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Long id;

@ManyToOne
@JoinColumn(name = "CUSTOM_ENTITY_SYS_ID")
@JsonBackReference
private CustomEntitySystem customEntitySystem;

@Column(name = "CUSTOM_ENTITY_ID")
private CustomEntity customEntity;

}

当我尝试使用存储库保存完整的CustomEntity对象时

  

customEntityRepository.save(customEntity);

然后我面临以下错误。

  

由于:org.hibernate.PersistentObjectException:分离的实体   传递给坚持:com.rbac.model.CustomEntityRole在   org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:124)     在   org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:806)     在org.hibernate.internal.SessionImpl.persist(SessionImpl.java:773)     在   org.hibernate.jpa.event.internal.core.JpaPersistEventListener $ 1.cascade(JpaPersistEventListener.java:80)     在   org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:467)     在   org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:392)     在   org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:193)     在   org.hibernate.engine.internal.Cascade.cascadeCollectionElements(Cascade.java:500)     在   org.hibernate.engine.internal.Cascade.cascadeCollection(Cascade.java:432)     在   org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:395)     在   org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:193)     在org.hibernate.engine.internal.Cascade.cascade(Cascade.java:126)

请解释我错了 预先感谢。

0 个答案:

没有答案