[英]Update on hibernate and spring MVC not working
我無法在編輯后更新表,因為當我調試並呈現DAO文件中的所有值時它工作正常,但在dao實施后,它未在用戶列表中顯示相同值的更新值。 我特此附上我的代碼:
JSP文件:
<form:form id="editForm" modelAttribute="user" action="update">
<div style="width: 400px; padding: 10px; border: 5px solid gray; margin: 0px;">
<table width="400px" height="150px">
<tr><td><font face="Arial">First Name:</font></td>
<td><input name="licenseNumber" value="${model.user.firstName}"></td></tr>
<tr><td><font face="Arial">Last Name:</font></td>
<td><input name="licenseNumber" value="${model.user.lastName}"></td></tr>
<tr><td><font face="Arial">Gender:</font></td>
<td><input name="licenseNumber" value="${model.user.gender}"></td></tr>
<tr><td><font face="Arial">City Name:</font></td>
<td><input name="licenseNumber" value="${model.user.city}"></td></tr>
<tr><td></td><td>
<input type="submit" value="Edit" />
<br>
<a href="userList.html" >Cancel</a>
</td></tr>
</table>
</div>
</form:form>
道方法:
@Override
public void updateUser (User user)
{
/*Transaction tx = session.beginTransaction();*/
sessionfactory.getCurrentSession().merge(user);
}
服務等級
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class UserServiceImpl implements UserService {
@Autowired
UserDao userDao;
@Override
public void addUser(User user)
{
userDao.saveUser(user);
}
@Override
public List<User> getUser()
{
return userDao.getUser();
}
@Override
public User getUser(int id)
{
return userDao.getUser(id);
}
@Override
public void updateUser(User user)
{
userDao.updateUser(user);
}
}
控制器類
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public ModelAndView editUserData(@ModelAttribute("user") User user,
BindingResult result) {
Map<String, Object> model = new HashMap<String, Object>();
model.put("user", userService.getUser(user.getId()));
return new ModelAndView("Edit","model",model);
}
@RequestMapping(value = "/update", method = RequestMethod.POST)
public ModelAndView updateUserData(@ModelAttribute("user") User user,
BindingResult result,SessionStatus status) {
userService.updateUser(user);
status.setComplete();
return new ModelAndView("redirect:/userList.html");
}
嘗試
更改通過更新 合並
sessionFactory.getCurrentSession()。update(user);
如果1不起作用,請嘗試:
sessionfactory.getCurrentSession()。merge(user); sessionFactory.getCurrentSession()。update(user);
您將所有@Transactional方法設置為readOnly =“ true”。 您應該覆蓋所有在數據庫中進行更改的方法。
@Service
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
public class UserServiceImpl implements UserService {
@Autowired
UserDao userDao;
@Override
@Transactional(propagation = Propagation.SUPPORTS, readOnly = false)
public void addUser(User user)
{
userDao.saveUser(user);
}
@Override
public List<User> getUser()
{
return userDao.getUser();
}
@Override
public User getUser(int id)
{
return userDao.getUser(id);
}
@Override
@Transactional(propagation = Propagation.SUPPORTS, readOnly = false)
public void updateUser(User user)
{
userDao.updateUser(user);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.