mysql 用于删除外键的空集

z31licg0  于 2023-08-02  发布在  Mysql
关注(0)|答案(1)|浏览(97)

在这种情况下,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

个字符

a0x5cqrl

a0x5cqrl1#

Hibernate不支持SET NULL操作。
这个特性请求是在2006年创建的,现在仍然处于“开放”状态。

  • @OnDelete -> action = OnDeleteAction.SET_NULL(类似于MySql 5)

解决方法是在父实体上创建一个@PreRemove方法,将子实体中的外键设置为NULL。我想如果添加其他子实体,就必须修改@PreRemove方法。请参见此答案中的示例:

相关问题