我一直在尝试设置一个小的hibernate / spring MVC项目。
我已经获得了Spring .jsp页面来显示数据库中的数据,但我无法弄清楚如何让hibernate将对象保存到数据库中。
这是我的(相关)代码:
GroupDAOImpl.java(方法)
@Override
public void saveGroup(Group group){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
session.save(group);
transaction.commit();
session.close();
}
HelloController.java方法:
public ModelAndView add(HttpServletRequest request, HttpServletResponse response, Group group) throws Exception {
groupDAO.saveGroup(group);
return new ModelAndView("redirect:list.htm");
}
jsp Page:
<form:form action="add.htm" commandName="group">
<table>
<tr>
<td>group Name :</td>
<td><form:input path="name"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Register"></td>
</tr>
</table>
从服务器登录:
Hibernate: insert into groups (id, name, shoppingList_id) values (default, ?, ?)
调试器GroupDAOImpl保存方法中“group”的值:
id = 2
name = "jjjj"
有什么想法吗?非常感谢!
答案 0 :(得分:0)
实际上我们在日志中看到了SQL请求:
Hibernate: insert into groups (id, name, shoppingList_id) values (default, ?, ?)
我猜你没解释得很好,你希望它是你现有对象的SQL更新查询。
如果要更新对象,SpringMVC绑定提供的Group实例应该知道对象id。 实际上,表单不会发送组ID,因此您的应用程序无法知道应该更新哪个对象。
即使知道了ID,也可能是Session.merge而不是Session.save来调用:)
答案 1 :(得分:0)
据我所知,hibernate属性需要以hibernate为前缀,比如
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
解决这个问题,这可能是你的问题