2012-04-07 11 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, и это вызывает мое dao с em.persist (member). Но этот вызов снова сохраняет роль, и я получаю дубликат ключевой ошибки для объекта роли. Я только хочу сохранить член, а затем сделать запись таблицы соединений для роли.

Что я могу сделать?

+0

Помогает ли [это] (http://stackoverflow.com/questions/7903800/hibernate-inserts-duplicates-into-a-onetomany-collection)? – nobeh

+0

Thanx для вашего ответа, но не знаю, как это может мне помочь? –

+0

В частности, вы можете попробовать [этот ответ] (http://stackoverflow.com/a/7905027/248082)? – nobeh

ответ

0

Ваше отношение User-Role - много-ко-многим (один пользователь имеет несколько ролей, у нескольких пользователей может быть одна и та же роль), но вы аннотировали его с помощью «Один-ко-многим».

Смежные вопросы