以下情景:
我有
用户对象:
...
@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。但是这个调用确实再次保存了角色,我得到了角色对象的重复键错误。 我只想保存成员,然后为角色创建连接表条目。
我该怎么办?
答案 0 :(得分:0)
您的关系用户 - 角色是多对多(一个用户有多个角色,多个用户可以拥有相同的角色),但您使用一对多注释它。