0

spring PropertyEditors を使用して Web フォームから ID のバインディングをセットアップしたところ、M:M レコードが削除されて再挿入されていることに気付きました。最初は CustomCollectionEditor を使っているからだと思っていたのですが、UserEditor でも同じことが起きています。

私のドメイン オブジェクトにはすべて、オブジェクトがまだ保存されていない場合に主キーと ref を使用する equals/hashcode メソッドがあります。

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;
}

バインディングを休止状態でうまく機能させる方法はありますか? マネージャーの変更がフォームの送信に含まれることを希望します。

4

1 に答える 1