hibernate同时保存一对多的两张表发生异常:Cannot add or update a child row

qq462877646 2012-07-05 05:25:25
两张表:users(用户) orders(订单) 一个用户对应多个订单。
String msgUsersSave = userDao.save(users);
Users users2 = userDao.get(msgUsersSave );
orders.setUsers(users2);
ordersDao.save(orders);
抛出异常:Cannot add or update a child row: a foreign key constraint fails (`iscm`.`orders`, CONSTRAINT `FK404172792206059` FOREIGN KEY (`users_id`) REFERENCES `users` (`id`))
SSH 注解模式。service内有事务。
...全文
515 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq462877646 2012-07-05
  • 打赏
  • 举报
回复
蛋疼 ,完全一样的代码,我去数据库里将三个表给删了,然后用程序重新建表。一切OK 。
我做的那个动作不是new 而是先保存主表的一条数据,返回这条数据的主键,然后再查询出来,作为从表的一个属性值,然后才保存从表的这条数据。具体原因不太明确,但是我这种做法应该是对的。谢谢大家帮帮哈,能给可说明的原因不? 因为数据库表我可能没有做改动,只是删除之后再创建而已。
zc499498753 2012-07-05
  • 打赏
  • 举报
回复
主外键约束问题,检查数据库表关系,和代码传的值,把需要插入的值和报异常的sql语句在数据库里运行一下就明白了。
Amacoder 2012-07-05
  • 打赏
  • 举报
回复
orders,你的这个对象是new出来的吧?在数据库中没有对应的记录。
di_wq 2012-07-05
  • 打赏
  • 举报
回复
错误异常显示是主外键约束的问题,插入是需要先更新有主键的表,才能更新拥有外键的表,当拥有主键的表没有记录时,拥有外键的表是不能插入数据的

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧