1

以下场景:

我有

用户对象:

...
@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。但是这个调用确实再次保存了角色,并且我得到了角色对象的重复键错误。我只想保存成员,然后为角色创建连接表条目。

我能做些什么?

4

1 回答 1

1

您的关系用户 - 角色是多对多(一个用户具有多个角色,多个用户可以具有相同的角色),但是您使用一对多对其进行了注释。

于 2012-04-07T21:03:40.373 回答