MyBaits 插入多方数据出错之keyProperty的运用
来源:互联网 发布:工程图纸软件 编辑:程序博客网 时间:2024/05/21 09:57
今天用Mybaits插入多方数据时报错如下:
org.apache.ibatis.exceptions.PersistenceException:
### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`mybatis`.`t_order`, CONSTRAINT `t_order_ibfk_1` FOREIGN KEY (`customer_id`) REFERENCES `t_customer` (`id`))从上述错误描述中可看出是外键冲突,在看控制台的插入语句:
发现:在插入Order时customer_id 竟然是0,后检查映射器配置文件发现未添加 keyProperty="userId" useGeneratedKeys="true"
在后面添加keyProperty="id" useGeneratedKeys="true"就可以插入成功了。
为什么要添加keyProperty="id" useGeneratedKeys="true"
因为,在默认情况下,insert操作返回的是一个int值,并且不是表示主键id,而是表示当前SQL语句影响的行数。
在向数据库插入数据时,需要保留插入数据的主键id,以便进行后续的update操作或者将id存入其他表作为外键。
这时我们就需要将insert插入操作时将返回的主键id绑定到对象中。
<insert id="insertCustomer" parameterType="Customer" keyProperty="id" useGeneratedKeys="true">
上面配置中,“keyProperty”表示返回的主键id要保存到对象的那个属性也就是名为id的属性中,“useGeneratedKeys”表示主键id为自增长模式。
阅读全文
0 0
- MyBaits 插入多方数据出错之keyProperty的运用
- mybaits+mysql获取插入数据的主键
- Mybaits的批量插入
- myBaits 插入多条数据 foreach 查询数据
- hibernate一对多,更新主表时删除旧的多方数据加入新的多方数据
- mybaits批量插入
- mybaits批量插入
- Oracle服务器插入中文数据出错的解决方法
- Spring3 向数据库内插入数据出错
- 运用innerHTML的插入样式
- mybaits 插入返回主键问题
- 用getHibernateTemplate()批量插入数据时出错
- mybatis批量插入数据到oracle出错
- Mysql数据的插入,表的复制,函数的运用,多表查询
- Mybaits更新数据1不可修改为0的问题
- mybaits中后台接收前台提交的数据解析
- 运用js容易出错的知识点
- 如何运用IF语句把数据插入到不同的表中?
- 制作虚线
- linux进程间通信方法
- HDU_1141 求n! <= 2^x,最大的n
- 从新建的layout中获取组件
- java中volatile关键字的含义
- MyBaits 插入多方数据出错之keyProperty的运用
- HDU 6113 度度熊的01世界【2017"百度之星"】【简单搜索判断联通块】
- pycharm 使用教程
- VRTK脚本都是干嘛的?
- ESP8266-01 固件更新过程
- 关于自增运算符
- 第六篇:JAVA网络编程之TCP Socket通信中由read返回值造成的的死锁问题(含代码)
- redis--内部结构--ziplist
- 丑数