public class User{ @ManyToMany(cascade = CascadeType.ALL) @JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id")) private Set<Group> groups = new HashSet<Group>(); //省略 getter、setter }
User user = new User(); Group g = groupRepo.findById(8);//数据库查询 Set gruops = new HashSet<Group>(); gruops.add(g); user.setGroups(gruops); userRepo.save(user);
userRepo.save(user);
保存数据时会出现错误detached entity passed to persist
。数据库
user
时想去级联保存gruops
。可是gruop已经有id值了。因此报错。user.setGroups(gruops);
放到保存user
以后。以下:User user = new User(); userRepo.save(user); //先保存user Group g = groupRepo.findById(8);//数据库查询 Set gruops = new HashSet<Group>(); gruops.add(g); user.setGroups(gruops); //再设置groups userRepo.save(user); //最后更新user