【发布时间】:2017-09-13 08:03:36
【问题描述】:
我在从数据库中删除实体时遇到问题。不管我做什么,它都不会删除。
驱动类
@Entity
@Table(name = "drivers")
public class Driver {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "driver", fetch = FetchType.EAGER)
@JsonSerialize(using = RatingsSerializer.class)
private List<Rating> ratings;
// other fields. Getters and Setters...
}
评级等级
@Entity
@Table(name = "ratings")
@JsonDeserialize(using = RatingDeserializer.class)
public class Rating {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "driver_id")
private Driver driver;
@ManyToOne
@JoinColumn(name = "client_id")
private Client client;
private int mark;
private Date createdAt;
//Getters and Setters ...
}
我所做的第一个是用@OneToMany(mappedBy = "driver", fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.REMOVE) 注释ratings,当调用driverRepository.delete(driver) 时它会抛出:
org.postgresql.util.PSQLException:错误:更新或删除表“drivers”违反了表“ratings”上的外键约束“fk3raf3d9ucm571r485t8e7ew83”
好的,选择其他方式。尝试使用ratingRepository 删除每个评分对象,但从未发生过,它只是遍历每个评分项并再次抛出错误
org.postgresql.util.PSQLException
下一步是将每个评级项目 Client 和 Driver 设置为 null。现在驾驶员实体已从数据库中删除,但评级实体仍保留在数据库中。 会发生什么?
Spring Data JPA 版本:1.5.7
【问题讨论】:
标签: java spring postgresql spring-data-jpa