Hibernate更新无效

时间:2013-11-27 08:25:13

标签: java hibernate hibernate-mapping

我的hibernate saveOrUpdate方法不起作用。 我不想使用load()或get()。是否可以更新记录。 我在dao层的更新方法。我从main方法调用它。它不会抛出任何异常

 public String updateEmp(EmployeeBean empBean) {
    Session session = null;
    try {
        session = sessionFactory.openSession();
        if (null != session) {
            session.beginTransaction();
            session.saveOrUpdate(empBean);
            System.out.println("Updated");
        } 

    } catch (Exception e) {
        session.getTransaction().rollback();
       e.printStackTrace();
    } finally {
        try {
            session.getTransaction().commit();
            session.close();
        } catch (Exception e) {
            session = null;
        }
    }
    return "updated";
}

我的主要方法是

 public static void main(String[] args) {
        Employee dao = new Employee();
        EmployeeBean empBean = new EmployeeBean();
        empBean.setEmpid("123"); //primary key in databse
        empBean.setFirstname("rahul");
        empBean.setLastname("sharma");
        dao.updateEmp(empBean);
    }
提前

thanx

3 个答案:

答案 0 :(得分:3)

将show_sql属性设置为true以查看是否打印了一些sql。

如果没有,您的会话可能为空,因此根本不运行更新代码。

打印下面的例外可能会看到......

  try {
        session.getTransaction().commit();
        session.close();
    } catch (Exception e) {
        session = null;
    }

检查您的会话或尝试使用getCurrentSession()。

答案 1 :(得分:0)

您提交交易的方式不正确。 它更喜欢在try块中提交。当try block {}发生异常时,事务将在catch块中回滚。然后在finnaly块中发生另一个异常,发生commit()。

答案 2 :(得分:0)

经过一些研究,我找到了答案。  我需要在EmployeeBean.hbm.xml中更改

<property name="email" type="string">
  <column name="EMAIL" length="60" not-null="true">
  </column>
</property>

非空= “真” &GT;替换为not-null =“false”&gt;