2014-12-29 34 views
0

Hibernate沒有更新SessionAttribute參數。Hibernate和@SessionAttribute

我使用名稱editGroup填充實體對象並將其放入SessionAttribute中。我在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,服務是交易性的。我更新了這篇文章。 – Lancaster

+0

有一個'@ Transactional'註釋不會使它成爲事務性的。如果你沒有''它什麼都不做,或者你兩次掃描同一個組件,它也不會做任何事情。 –

回答

0

我在我的問題上找到答案。我的<tx:annotation-driven/>彈簧配置。在指定了這個事務管理器參數之後,程序正常運行。

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