嗨,伙计们,我想一次持久化三个对象,这是代码:
@Entity
public class Mission implements Serializable {
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Long id;
@OneToMany( mappedBy = "mission" )
@JsonManagedReference
private List<Station> stations = new ArrayList<>();
@OneToMany( mappedBy = "mission" )
@JsonManagedReference
private List<StationPrice> stationsPrice = new ArrayList<>();
}
Station :
@Entity
public class Station implements Serializable {
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Long id;
private String station;
@ManyToOne( fetch = FetchType.LAZY, cascade = CascadeType.ALL )
@JsonBackReference
private Mission mission;
}
车站价格 :
@Entity
public class StationPrice implements Serializable {
/**
*
*/
@Id
@GeneratedValue( strategy = GenerationType.IDENTITY )
private Long Id;
private String stationsName;
private String stationsPrice;
@ManyToOne( fetch = FetchType.LAZY, cascade = CascadeType.ALL )
@JsonBackReference
private Mission mission;
}
因此,当我坚持他的 我使用了以下方法:
@Override
public Mission addMision( Mission mission ) {
List<Station> stations = mission.getStations();
List<StationPrice> stationPrices = mission.getStationsPrice();
mission.setStations( new ArrayList<Station>() );
for ( Station station : stations ) {
station.setMission( mission );
mission.getStations().add( station );
mission = stationRepository.save( station ).getMission();
}
return mission;
}
这个方法只持久化任务实体和站实体,不持久化站价格实体,有没有办法同时持久化这三个实体?
我认为
如果添加
@OneToMany(fetch = FetchType.LAZY, targetEntity=Station.class, cascade = CascadeType.ALL )
@JsonManagedReference
private List<Station> stations = new ArrayList<>();
@OneToMany(fetch = FetchType.LAZY, targetEntity=StationPrice.class, cascade = CascadeType.ALL )
@JsonManagedReference
private List<StationPrice> stationsPrice = new ArrayList<>();
}
然后,您可以简单地保留任务实体,这将保留车站和车站价格。
编辑顺便说一句,你的ERM对我来说看起来很奇怪,在代码中,你循环任务站,然后添加然后回到任务中?和站价格根本不用?