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中有错误我已修复感谢