JPA 数据库添加数据报错:Cannot add or update a child row: a foreign key constraint fails

最近写jpa 的单项多对多,出现的错误,记录一下

java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`dj_examination_service`.`dj_exam_bank_rules`, CONSTRAINT `dj_exam_bank_rules_ibfk_1` FOREIGN KEY (`question_bank_id`) REFERENCES `dj_exam_question_bank` (`id`))
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:975)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1114)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1062)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1383)

找了半天 网上的帖子是说对应的主键不存在,但是我的数据库中明明是早已就创建好的。
这时候查看sql输出内容发现端倪。insert 的值 反了,最终找到配置多对多关系的时候 对应的id写反了
实体SelectionRules 中错误的配置

    @ManyToMany
    @JoinTable(name="dj_exam_bank_rules",joinColumns={@JoinColumn(name="question_bank_id",referencedColumnName ="id")},
            inverseJoinColumns ={@JoinColumn(name="rules_id",referencedColumnName ="id")} )
    private Set<QuestionBank> bankSet = new HashSet<>();

正确配置 如下

  @ManyToMany
    @JoinTable(name="dj_exam_bank_rules",joinColumns={@JoinColumn(name="rules_id",referencedColumnName ="id")},
            inverseJoinColumns ={@JoinColumn(name="question_bank_id",referencedColumnName ="id")} )
    private Set<QuestionBank> bankSet = new HashSet<>();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值