嘗試將正確的關系數據添加到一對多聯接的另一側時,我遇到了此異常。由于某種原因,它沒有自動獲取 car_id這是我的代碼。汽車模型@Data@Entity@Table(uniqueConstraints={ @UniqueConstraint(columnNames = {"date", "auctionNumber", "auctionId"})})public class Car { @Id @GeneratedValue private UUID id; private String date; private int auctionId; private int auctionNumber; @OneToMany(mappedBy = "car", orphanRemoval = true, cascade={CascadeType.ALL}) private List<CarPhoto> photos; public void addPhoto(CarPhoto photo) { if (photos == null) { photos = new ArrayList<CarPhoto>(); } photos.add(photo); photo.setCar(this); }}汽車照片模型@Data@Entity@Table(name="car_photo")public class CarPhoto { @Id @GeneratedValue private UUID id; @Column(unique=true) private String path; @ManyToOne(fetch=FetchType.LAZY) @JoinColumn(name="car_id", insertable=false, updatable=false) private Car car;}Repository @Repository 公共接口 CarRepository 擴展 CrudRepository { }持久性...loop cardata { Car car = new Car(); car.setAuctionId(cardata.auctionId); car.setAuctionNumber(cardata.auctionNumber); car.setDate(cardata.date); Pattern.compile("#").splitAsStream(cardata.pictures).forEach(path - > { CarPhoto photo = new CarPhoto(); photo.setPath(path); car.addPhoto(photo); }); cars.add(car);}carRepository.saveAll(cars);
2 回答

慕容3067478
TA貢獻1773條經驗 獲得超3個贊
實際上,您需要從映射中刪除insertable = false
和刪除:updatable = false
@JoinColumn(name="car_id", insertable=false, updatable=false)
并覆蓋equals
和實體的hashCode
方法以避免重復實體。您可以使用 lombok 的.Car
CarPhoto
@EqualsAndHashCode(callSuper = false)
因為只有insertable=true
您才能插入實體,但這可能違反唯一約束。

慕的地6264312
TA貢獻1817條經驗 獲得超6個贊
insertable=false
從您的聲明中刪除@JoinColumn(name="car_id", insertable=false, updatable=false)
。因為現在您拒絕設置和更新字段car_id
添加回答
舉報
0/150
提交
取消