SpringData 级联更新



这是第一个实体:

@Entity
@Table(name = "photographers")
public class Photographer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NotNull
@Column(name = "first_name")
private String firstName;
@NotNull
@Size(min = 2, max = 50)
@Column(name = "last_name")
private String lastName;
@Pattern(regexp = "^\+[0-9]{1,3}/[0-9]{8,10}$")
private String phone;
@NotNull
@OneToOne(optional = false)
@JoinColumn(name = "primary_camera_id", referencedColumnName = "id")
private BasicCamera primaryCamera;
@NotNull
@OneToOne(optional = false)
@JoinColumn(name = "secondary_camera_id", referencedColumnName = "id")
private BasicCamera secondaryCamera;
@OneToMany(mappedBy = "owner")
private Set<Lens> lenses;
@OneToMany(mappedBy = "owner")
private Set<Accessory> accessories;

这是另一个(镜头(:

@Entity
@Table(name = "lenses")
public class Lens {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String make;
@Column(name = "focal_length")
private Integer focalLength;
@Column(name = "max_aperture", precision = 1)
private Double maxAperture;
@Column(name = "compatible_with")
private String compatibleWith;
@ManyToOne
@JoinColumn(name = "owner_id", referencedColumnName = "id")
private Photographer owner;

首先,我有没有所有者的镜头。然后我想创建一个拥有所有内容的摄影师,并将其镜头设置为退出镜头,我用以下代码执行此操作:

for (Lens lens : lensSet) {
lens.setOwner(photographer);
}
photographer.setPrimaryCamera(primaryCamera);
photographer.setSecondaryCamera(secondaryCamera);
photographer.setLenses(lensSet);

当我保存摄影师时,我希望将镜头所有者设置为创建的镜头所有者。我尝试了级联。合并摄影师实体中的一对多实现,但不起作用,并且在数据库中所有镜头所有者仍然是空的

我想通了:我需要在保存摄影师保存镜头:

for (Lens lens : lensSet) {
lens.setOwner(photographer);
}
photographer.setPrimaryCamera(primaryCamera);
photographer.setSecondaryCamera(secondaryCamera);
photographer.setLenses(lensSet);

this.photographerRepository.save(photographer);
this.lensRepository.save(lensSet);

最新更新