首页 > 解决方案 > Spring boot JPA决定实体的级联顺序

问题描述

我有3个实体类定义如下:

@Entity
public class Rimorchio {

@Id
@GeneratedValue
private long idrimorchio;

@Column(unique = true)
private String targa;

// .... Getters and Setters

}


@Entity
public class Atk {

@Id
@GeneratedValue
private long idatk;

@Column(unique = true)
private String codice;

@Column(unique = true)
private String targa;

@OneToOne
private Rimorchio suggerito;

// .... Getters and Setters

}


@Entity
public class Trasportatore {

@Id
@GeneratedValue
private long idtrasportatore;

@Column(unique = true)
private String nometrasportatore;

@OneToMany(cascade = {CascadeType.PERSIST})
private List<Rimorchio> listarimorchi;

@OneToMany(cascade = {CascadeType.PERSIST})
private List<Atk> listaatk;

@OneToMany(cascade = {CascadeType.PERSIST})
private List<Autista> listaautisti;

// .... Getters and Setters

}

当我尝试将 Trasportatore 类保存在数据库中时,我收到以下错误:

   org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - 
   save the transient instance before flushing : 
   com.petroli.gestionefasipetroli.entities.Atk.suggerito -> 
   com.petroli.gestionefasipetroli.entities.Rimorchio

所以,我必须在 Atk 实例之前保存 Rimorchio 实例。我有一个结构,它有一个扩展 JpaRepository 的存储库和一个简单调用的服务

 repository.saveAndFlush(trasportatore);

如何确定插入数据库的顺序以避免此问题?或者有另一种解决方案(可能避免手动级联操作)来实现这个目标?

标签: javaspring-bootjpa

解决方案


推荐阅读