【发布时间】:2018-03-15 11:55:49
【问题描述】:
我想要做的是获取数据用户并复制到新用户(创建一个新用户)。这就是我正在做的:
@Entity
@Table(name = "role")
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "role_id")
private int roleId;
@Column(name = "role")
private String role;
public Role() {
}
}
@Entity
@Table(name = "usuario")
public class Users {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private int id;
@Column(name = "email")
private String email;
@Column(name = "password", nullable=false, length=60)
private String password;
@Column(name = "name", unique=true, nullable=false, length=6)
private String name;
@Column(name = "last_name")
private String lastName;
@Column(name = "active", nullable=false)
private int active;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Set<Role> roles;
public Users() {
}
}
我从一位现有用户那里获取数据:
Optional<Users> user = usersRepository.findByName(name);
//create a new User to persist
Users newUser = new Users();
newUser.setName("new name");
newUser.setActive(1);
newUser.setEmail(user.get().getEmail());
newUser.setLastName(user.get().getLastName());
newUser.setPassword(user.get().getPassword());
Set<Role> roles = user.get().getRoles();
newUser.setRoles(roles);
usersRepository.save(newUser);
我收到这条消息:
找到对集合的共享引用:model.authentication.Users.roles; 嵌套异常是 org.hibernate.HibernateException:找到对集合的共享引用:model.authentication.Users.roles
更新 1(已解决)
Optional<Users> user = usersRepository.findByName(codalojamiento);
Users newUser = new Users();
newUser.setName("new name");
newUser.setActive(1);
newUser.setEmail(user.get().getEmail());
newUser.setLastName(user.get().getLastName());
newUser.setPassword(user.get().getPassword());
Set<Role> newRoles = new HashSet();
Set<Role> roles = user.get().getRoles();
for (Role r : roles) {
newRoles.add(r);
}
newUser.setRoles(newRoles);
usersRepository.save(newUser);
有什么建议吗? 谢谢
【问题讨论】: