Java 当存在@Embedded ID时,如何正确插入@Entity
这是我的密码 用户类Java 当存在@Embedded ID时,如何正确插入@Entity,java,mysql,spring,hibernate,Java,Mysql,Spring,Hibernate,这是我的密码 用户类 @Entity public class User implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @Id @Column @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @Col
@Entity
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
@Column
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@Column
private String username;
@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name="APP_USER_ID", referencedColumnName="id")
private List<UserRole> roles;
@Column
private String email;
@Column
private String password;
protected User(){
}
public User(String username, String email, String password, List<UserRole> roles){
this.username = username;
this.email= email;
this.password= password;
this.roles= roles;
}
这些是数据库中的表
- 用户表-> |id |电子邮件|密码|用户名|
- 用户角色表-> |角色|应用程序_用户_ID|
返回userRepository.save(新用户(用户名、电子邮件、编码器、编码(密码)),
新名单(){{
添加(//创建一个新的UserRole…);
}}));
我是spring/hibernate的新手,我不知道如何使用hibernate将用户正确地插入数据库。这个
UserRole
类没有任何接受任何参数的构造函数,所以你不能写这个:newuserrole(USERID,“ADMIN”)
,但是,您希望通过内部类Id
创建一个userId
,因此可能需要这样编写:newuserrole.Id(userId,“ADMIN”)
“这不起作用”这是什么意思?异常或无异常,但表中也没有数据?共享异常stacktrace(如果有)。@Rohit我编辑了问题。我的代码是无效的。我需要知道如何正确地将用户插入数据库。答案对您没有帮助吗?@Rohit否。因为我应该传递什么值作为用户ID?如何获取同时插入的用户的id?您的id在user Generated中如何?如何获取用户id?
@Entity
@Table(name = "user_role")
public class UserRole {
@Embeddable
public static class Id implements Serializable {
private static final long serialVersionUID = 1322120000551624359L;
@Column(name = "APP_USER_ID")
protected Integer userId;
@Enumerated(EnumType.STRING)
@Column(name = "ROLE")
protected Role role;
public Id() { }
public Id(Integer userId, Role role) {
this.userId = userId;
this.role = role;
}
}
@EmbeddedId
Id id = new Id();
@Enumerated(EnumType.STRING)
@Column(name = "ROLE", insertable=false, updatable=false)
protected Role role;
public Role getRole() {
return role;
}
}
return userRepository.save(new User(username, email, encoder.encode(password)),
new List<UserRole>(){{
add(//create a new UserRole...);
}}));