我的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
答案 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)
<property name="email" type="string">
<column name="EMAIL" length="60" not-null="true">
</column>
</property>
非空= “真” &GT;替换为not-null =“false”&gt;