2012-04-07 15 views
1

次のシナリオ持続しません。私が持っているJPAは、子供たちに

ユーザーオブジェクト:

... 
@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)でmy daoを呼び出します。しかし、この呼び出しはロールを再度保存し、ロールオブジェクトのキーエラーが重複してしまいます。 私は、メンバーを保存してから、ロールのための結合テーブル項目を作成したいだけです。

私は何ができますか?

+0

[this](http://stackoverflow.com/questions/7903800/hibernate-inserts-duplicates-into-a-onetomany-collection)は役に立ちますか? – nobeh

+0

あなたの答えは高尚ですが、これがどのように役立つのか分かりませんか? –

+0

具体的には、[この回答](http://stackoverflow.com/a/7905027/248082)を試すことができますか? – nobeh

答えて

0

リレーションシップユーザーロールは多対多です(1人のユーザーに複数のロールがあり、複数のユーザーが同じロールを持つことができます)が、One-To-Manyで注釈を付けました。

関連する問題