在这种情况下,answer_id是评级表中的外键,并且answer_id是answers表中的主键。我需要删除答案,但**“无法删除或更新父行:一个外键约束失败.**错误发生.如何设置此外键的ON DELETE SET NULL选项。
@Entity
@Table(name = "ratings")
public class Ratings {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long rating_id;
@Column(nullable = false, unique = false, length = 45)
private Short ratingValue;
@ManyToOne(cascade = fetch = FetchType.LAZY)
@JoinColumn(name = "userId")
private User user;
@ManyToOne(cascade = fetch = FetchType.LAZY)
@JoinColumn(name = "answer_id")
private Answer answer;
@ManyToOne(cascade = fetch = FetchType.LAZY)
@JoinColumn(name = "question_id")
private Question question;
//getters and setters
个字符
1条答案
按热度按时间a0x5cqrl1#
Hibernate不支持SET NULL操作。
这个特性请求是在2006年创建的,现在仍然处于“开放”状态。
解决方法是在父实体上创建一个
@PreRemove
方法,将子实体中的外键设置为NULL。我想如果添加其他子实体,就必须修改@PreRemove
方法。请参见此答案中的示例: