2013-07-29 3 views
0

Я только что установил привязку идентификаторов из своих веб-форм с использованием Spring PropertyEditors и заметил, что записи M: M удаляются и повторно вставлены. Сначала я думал, что это происходит, потому что я использовал CustomCollectionEditor, но то же самое происходит с UserEditor.hibernate @ManyToMany удаление и повторная установка

Мои объекты домена имеют методы equals/hashcode, которые используют первичный ключ и ref, если объект еще не сохранен.

Hibernate: update delivery_team set name=? where id=? 
Hibernate: delete from delivery_team_manager where delivery_team_id=? 
Hibernate: delete from delivery_team_resource where delivery_team_id=? 
Hibernate: insert into delivery_team_manager (delivery_team_id, user_id) values (?, ?) 
Hibernate: insert into delivery_team_manager (delivery_team_id, user_id) values (?, ?) 
Hibernate: insert into delivery_team_manager (delivery_team_id, user_id) values (?, ?) 
Hibernate: insert into delivery_team_manager (delivery_team_id, user_id) values (?, ?) 

Я попытался добавить менеджера с помощью отдельной обратной передачи и записи не удаляются. так что это явно не проблема спячки.

@RequestMapping(value = "add_manager/{teamid}/{uid}", method = RequestMethod.GET) 
public String addManager(@PathVariable Long teamid, @PathVariable Long uid, Model model) { 
    DeliveryTeam team = deliveryTeamService.getById(teamid); 
    User user = userService.loadUserById(uid, false); 
    team.getManager().add(user); 
    deliveryTeamService.save(team); 
    return "redirect:/delivery_team/update/" + teamid; 
} 

В любом случае, я могу получить привязку к работе с спящим режимом? Я бы хотел, чтобы изменения в менеджере включались в форму submit.

ответ

0

Использование службы преобразования разрешило эту проблему, поскольку она преобразует каждый объект отдельно, а не сама коллекция.

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