2014-12-29 2 views
0

Hibernate не обновляет параметр SessionAttribute.Hibernate и @SessionAttribute

Я заполнил объект сущности и поместил его в SessionAttribute с именем editGroup. Я изменил его на странице jsp и отправил на контроллер. В контроллере я просто вызываю метод службы и передаю ему объект из сеанса (editGroup). Но объект объекта не обновляется.

Контроллер

@Controller 
@SessionAttributes(value = "editGroup") 
@RequestMapping(value = "/group") 
public class GroupController { 
    ... 
    @RequestMapping(value = "/{id}/edit", method = RequestMethod.GET) 
    public String groupEdit(@PathVariable Long id, Model model) { 
     if (!model.containsAttribute("editGroup")) { 
      model.addAttribute("editGroup", groupService.findGroup(id)); 
     } 
     return "group/editGroup"; 
    } 
    @RequestMapping(value = "/{id}/update", method = RequestMethod.POST) 
    public String groupUpdate(@ModelAttribute("editGroup") Group editGroup, 
      @PathVariable Long id, SessionStatus status) { 
     groupService.updateGroup(editGroup); 
     status.setComplete(); 
     return "redirect:/group/" + id; 
    } 
} 

Сервис@Transactional

public void updateGroup(Group obj) { 
    groupDAO.update(group); 
} 

DAO

public void update(T obj) { 
    getSession().merge(obj); 
} 

Hibernate даже не отправляет запрос. Помоги мне, пожалуйста.

+0

Убедитесь, что ваша служба транзакционный, без сделки ничего не попадает в базу данных. –

+0

@M. Deinum, Service является транзакционным. Я обновил сообщение. – Lancaster

+0

Существует аннотация @ @ Transactional, которая не делает транзакцию. Если у вас нет '', он ничего не делает или если вы сканируете тот же компонент дважды, он ничего не делает. –

ответ

0

Я нашел ответ на свой вопрос.

У меня был <tx:annotation-driven/> в конфигурации пружины. После указания параметра transaction-manager в этом, программа работает правильно.

<tx:annotation-driven transaction-manager="transactionManager"/>

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