Hibernate没有将对象保存到数据库

时间:2013-04-25 19:00:12

标签: spring hibernate model-view-controller

我一直在尝试设置一个小的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"

有什么想法吗?非常感谢!

2 个答案:

答案 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" />

解决这个问题,这可能是你的问题