以下场景:
我有
用户对象:
...
@Column(name = "TITLE")
private String title;
@NotNull
@NotEmpty
@Column(name = "STREET_ADRESS")
private String streetAdress;
@NotNull
@NotEmpty
@Column(name = "CITY")
private String city;
...
@OneToMany(fetch = FetchType.EAGER)
@NotNull
@NotEmpty
protected Set<Role> roles = new HashSet<Role>();
Role roleDaoById = roleService.getRoleByName(RoleName.User.toString());
Set<Role> roles = new HashSet<Role>();
roles.add(roleDaoById);
member.setRoles(roles);
member.setSuspend(false);
member.setPlayer(true);
memberService.addMember(member);
我的问题是角色已经在数据库中可用。这就是我通过 roleService 加载它们的原因。我调用 memberService.addMember,这用 em.persist(member) 调用我的 dao。但是这个调用确实再次保存了角色,并且我得到了角色对象的重复键错误。我只想保存成员,然后为角色创建连接表条目。
我能做些什么?