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

あなたの関係ユーザー-役割は多対多です(1人のユーザーが複数の役割を持ち、複数のユーザーが同じ役割を持つことができます)が、あなたはそれを1対多で注釈を付けました。

于 2012-04-07T21:03:40.373 に答える