Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 更新子行_Java_Mysql_Spring - Fatal编程技术网

Java 更新子行

Java 更新子行,java,mysql,spring,Java,Mysql,Spring,我的数据库中的外键属性有问题,无法添加或更新子行我认为问题在下面的代码中: @RequestMapping( value = "/saveeeee", method = RequestMethod.POST) public ModelAndView doSave(@RequestParam("user_id") String user_id, @RequestParam("username") String username,@RequestParam("password") Strin

我的数据库中的外键属性有问题,无法添加或更新子行我认为问题在下面的代码中:

    @RequestMapping( value = "/saveeeee", method = RequestMethod.POST)
public ModelAndView doSave(@RequestParam("user_id") String user_id, @RequestParam("username") String username,@RequestParam("password") String password,@RequestParam("rol") String rol){
    ModelAndView mv = new ModelAndView("redirect:/utilisateurs");
    User op;
    op = new User();

    Role ro;
    ro = new Role();

    ro.setRole(rol);

    if(!user_id.isEmpty()){
        op =(User)appRepo.findOne(Integer.parseInt(user_id));
    } else {
        op = new User();
    }

    op.setUsername(username);
    op.setPassword(passwordEncoder.encode(password));
    ro.setUser(op);
    ro.setUsername(op.getUsername());

    op.setRo(ro);



    appRepo.save(op);
    return mv;
}
实体:

import javax.persistence.*;

@Entity
@Table(name = "users")
public class User {

public Role ro;
public int user_id;
public String username;
public String password;
public int enabled = 1;

public User() {
}



public User(String username, String password, int enabled) {
    this.username = username;
    this.password = password;
    this.enabled = enabled;

}

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public int getUser_id() {
    return user_id;
}

public void setUser_id(int user_id) {
    this.user_id = user_id;
}

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "username", referencedColumnName = "username", insertable = false, updatable = false)
public Role getRo() {
    return ro;
}

public void setRo(Role ro) {
    this.ro = ro;
}









@Column(name = "username")
public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

@Column(name = "password")
public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

@Column(name = "enabled")
public int getEnabled() {
    return enabled;
}

public void setEnabled(int enabled) {
    this.enabled = enabled;
}





}
_

}

我的sql shema:

CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(100) NOT NULL,
`enabled` tinyint(4) NOT NULL DEFAULT '1',
PRIMARY KEY (`username`),
UNIQUE KEY `user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1


CREATE TABLE `user_roles` (
`user_role_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`role` varchar(20) NOT NULL,
PRIMARY KEY (`user_role_id`),
UNIQUE KEY `uni_username_role` (`role`,`username`),
KEY `fk_username_idx` (`username`),
CONSTRAINT `fk_username` FOREIGN KEY (`username`) REFERENCES `users` 
(`username`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
我的错误是:

om.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法添加或更新子行:外键约束失败(
数据库
,约束fk\u用户名外键(
用户名
)引用
用户
用户名

CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(100) NOT NULL,
`enabled` tinyint(4) NOT NULL DEFAULT '1',
PRIMARY KEY (`username`),
UNIQUE KEY `user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1


CREATE TABLE `user_roles` (
`user_role_id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`role` varchar(20) NOT NULL,
PRIMARY KEY (`user_role_id`),
UNIQUE KEY `uni_username_role` (`role`,`username`),
KEY `fk_username_idx` (`username`),
CONSTRAINT `fk_username` FOREIGN KEY (`username`) REFERENCES `users` 
(`username`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1