У меня есть три таблицы User, Role и UserRoleRelationships (таблица соединения многие-ко-многим). В моем сервисе у меня нет проблем с редактированием пользователя и сохранением соответствующих ролей, но я не могу сделать это в контроллере.
Ожидаемое поведение в сервисе:
Hibernate: update dbo.Users set Username=?, Password=?, Email=?, Workphone=?, Privatephone=?, FullName=? where UserId=?
Hibernate: update dbo.UserRoles set Role=? where RoleId=?
Hibernate: update dbo.UserRoles set Role=? where RoleId=?
Но поведение в контроллере таково:
Hibernate: update dbo.Users set Username=?, Password=?, Email=?, Workphone=?, Privatephone=?, FullName=? where UserId=?
Hibernate: delete from UserRoleRelationships where UserId=?
Мой контроллер выглядит так:
@RequestMapping(value = "/usermanagement/edit/{userId}")
public ModelAndView initUpdateForm(@PathVariable String userId, ModelMap model) {
model.addAttribute("user", iwUserManagementService.getUser(Integer.valueOf(userId)));
return new ModelAndView(viewName, model);
}
@RequestMapping(value = "/usermanagement/edit/{userId}", method = RequestMethod.POST)
public ModelAndView processUpdateSubmit(@ModelAttribute("user") IWUser iwUser,
BindingResult result, SessionStatus status){
iwUserManagementService.saveOrUpdate(iwUser);
status.setComplete();
return new ModelAndView("redirect:/usermanagement", new ModelMap("user", iwUser));
}
Часть моего web.xml:
<filter>
<filter-name>hibernateFilter</filter-name>
<filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
<init-param>
<param-name>singleSession</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>flushMode</param-name>
<param-value>AUTO</param-value>
</init-param>
<init-param>
<param-name>sessionFactoryBeanName</param-name>
<param-value>sessionFactory</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>hibernateFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Для меня это выглядит так, будто модель пользователя в processUpdateSubmit () не возвращает роли, только опубликованные элементы. Как я могу заставить его вернуть роли?
Спасибо:)