次のシナリオ:
私は持っています
ユーザーオブジェクト:
...
@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を呼び出します。しかし、この呼び出しはロールを再度保存し、ロールオブジェクトの重複キーエラーが発生します。メンバーを保存してから、ロールの結合テーブルエントリを作成したいだけです。
私に何ができる?