Java mybatis插入到两个表中是否包含翻译中的forign键?

Java mybatis插入到两个表中是否包含翻译中的forign键?,java,mysql,mybatis,Java,Mysql,Mybatis,我想在事务中插入两个具有外键约束的表: 这是我的密码 @Transactional(readOnly = false) public CuponRule save(CuponRule cuponRule, List<Cupon> cupons, List<CuponPrintRule> printRules) { cuponRule.preInsert(); dao.insert(cuponRule); List<Long> cupon

我想在事务中插入两个具有外键约束的表:

这是我的密码

@Transactional(readOnly = false)
public CuponRule save(CuponRule cuponRule, List<Cupon> cupons, List<CuponPrintRule> printRules) {
    cuponRule.preInsert();
    dao.insert(cuponRule);
    List<Long> cuponIds = new ArrayList<>();
    List<Long> printRuleIds = new ArrayList<>();
    cupons.forEach(i -> cuponIds.add(i.getCuponId()));
    dao.addCupons(cuponRule.getRuleId(), cuponIds);
    printRules.forEach(i -> printRuleIds.add(i.getPrintRuleId()));
    dao.addPrintRules(cuponRule.getRuleId(), printRuleIds);
    return cuponRule;
}
@Transactional(readOnly=false)
公共CuponRule保存(CuponRule CuponRule、List cupons、List printRules){
cuponRule.preInsert();
插入(cuponRule);
List cuponIds=new ArrayList();
List printRuleId=new ArrayList();
forEach(i->cuponIds.add(i.getCuponId());
addCupons(cuponRule.getRuleId(),cuponIds);
forEach(i->printruleid.add(i.getPrintRuleId());
addPrintRules(cuponRule.getRuleId(),printRuleId);
返回cuponRule;
}
我的mapperdao.xml是

<insert id="addPrintRules">
    INSERT INTO pri_print_rule_cupon_rule(
    print_rule_id,
    rule_id
    )VALUES
    <foreach collection="printRules" item="id" separator=",">
        (#{0},#{id})
    </foreach>
</insert>

<insert id="addCupons">
    INSERT INTO pri_cupon_cupon_rule(
    cupon_id,
    rule_id
    )VALUES
    <foreach collection="cupons" index="id" separator=",">
        (#{id},#{0})
    </foreach>
</insert>

<insert id="insert" useGeneratedKeys="true" keyProperty="ruleId">
    INSERT INTO pri_cupon_rule(
    rule_name,
    rule_leave,
    rule_scope,
    rule_status,
    start_time,
    end_time,
    create_by,
    create_date,
    update_by,
    update_date,
    remarks,
    del_flag
    )VALUES (
    #{ruleName},
    #{ruleLeave},
    #{ruleScope},
    #{ruleStatus},
    #{startDate},
    #{endDate},
    #{createBy.id},
    #{createDate},
    #{updateBy.id},
    #{updateDate},
    #{remarks},
    #{DEL_FLAG_NORMAL}
    )
</insert>

插入到pri_pri_print_rule_cupon_rule中(
打印规则id,
规则id
)价值观
(#{0},#{id})
插入pri_cupon_cupon_规则(
丘比特,
规则id
)价值观
(#{id},#{0})
插入pri_cupon_规则(
规则名称,
请离开,
规则(u)范围,,
规则(u)地位,,
开始时间,
结束时间,
创建,
创建日期,
更新由:,
更新日期,
评论,
德鲁旗
)价值观(
#{ruleName},
#{ruleLeave},
#{ruleScope},
#{ruleStatus},
#{startDate},
#{endDate},
#{createBy.id},
#{createDate},
#{updateBy.id},
#{updateDate},
#{备注},
#{DEL_FLAG_NORMAL}
)
但我得到的错误信息是

原因:com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法添加或更新子行:外键约束失败(
dadi uat
pri-cupon\u-cupon\u规则
FK\u-cupon\u规则外键(
cupon id
)引用
pri cupon(
cupon\u id


我该如何修复此问题?

显示您的DDL,因为我认为您在SchemeEyes中有错误我已修复感谢显示您的DDL,因为我认为您在SchemeEyes中有错误我已修复感谢