【发布时间】:2013-11-20 22:25:16
【问题描述】:
我有一个用户有很多地址和很多电话。 我使用mysql和spring。 当我更新用户时,我会删除其地址和电话,并插入数据。
更新用户 删除地址 删除手机
插入地址 插入手机
create table user(
user_id INT NOT NULL AUTO_INCREMENT,
usertitle varchar(100),
hasphones boolean,
PRIMARY KEY (user_id)
);
create table address_user(
address_user_id INT NOT NULL AUTO_INCREMENT,
addresstitle varchar(100),
addressstr varchar(5000),
showcolumn boolean,
usephones boolean,
user_id int not null,
PRIMARY KEY (address_user_id),
KEY `user_id` (`user_id`),
CONSTRAINT `address_user_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
);
create table phone_user(
phone_user_id INT NOT NULL AUTO_INCREMENT,
typeParameter int,
phonelabel varchar(25),
user_id int not null,
PRIMARY KEY (phone_user_id),
KEY `user_id` (`user_id`),
CONSTRAINT `phone_user_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`)
);
我收到此错误
ex = (org.springframework.web.util.NestedServletException) org.springframework.web.util.NestedServletException:
请求处理失败;嵌套异常是 org.springframework.dao.DataIntegrityViolationException: PreparedStatementCallback; SQL [插入 address_user (addresstitle, addressstr, showcolumn, usephones, user_id) 值 (?, ?, ?, ?, ?)];
无法添加或更新子行:外键约束失败 (base.address_user, CONSTRAINT address_user_ibfk_1 FOREIGN KEY (user_id) REFERENCES user (user_id));
嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:
删除java代码
StringBuffer sb = new StringBuffer();
sb.append(" delete from address_user where user_id = ? ");
jdbcTemplate.update(sb.toString(), id);
StringBuffer sb = new StringBuffer();
sb.append(" delete from phone_user where user_id = ? ");
jdbcTemplate.update(sb.toString(), id);
插入代码
StringBuffer sb = new StringBuffer();
sb.append(" insert into phone_user (");
sb.append(" typeparameter, phonelabel, user_id ) ");
sb.append(" values (?, ?, ?) ");
jdbcTemplate.update(sb.toString(), phone.getTypeParameter().getValue(), phone.phonelabel(), phone.getUser_id());
StringBuffer sb = new StringBuffer();
sb.append(" insert into address_user (");
sb.append(" addresstitle, addressstr, showcolumn, usephones, user_id ) ");
sb.append(" values (?, ?, ?, ?, ?) ");
j dbcTemplate.update(sb.toString(), address.getAddressTitle(), address.getAddressStr(), address.getShowColumnName(), address.getUsePhones(), phone.getUser_id());
我不太明白,我不做更新,我删除和插入。
【问题讨论】:
-
请添加所有相关的Java代码