编程语言
首页 > 编程语言> > java-休眠更新查询问题

java-休眠更新查询问题

作者:互联网

对于此更新查询

update TestDB.dbo.MyEmp set empname=? where empid=?

我在DAO课堂上写的

MyEmployee myEmployee = new MyEmployee();

MyEmployee myEmployee =(MyEmployee )session.load(MyEmployee.class, 
  new Integer(1700));
myEmployee.setName("updatedName"); 
session.update(myEmployee );

它的工作正常,但我需要了解下面提到的这种类型的更新查询

update TestDB.dbo.MyEmp set empsalary=? where empid=? && empname = ?

(即,我需要在where子句中使用两个条件来更新表,这可以由HQL完成,但我想知道我们如何通过使用saveOrUpdate方法来实现此目的.)

如何使用update或saveOrUpdate method()进行更新?
是否有可能在休眠状态下这样做?

解决方法:

您必须首先通过两种方式获取对象:

1- HQL

Query query = session.createQuery("from MyEmployee e where e.id = ? and e.name = ?");
query.setParameter(0, 1);
query.setParameter(1, "myName");
MyEmployee e = (MyEmployee) query.uniqueResult();
e.setSalary(5000);
session.saveOrUpdate(e);

2-标准

Criteria criteria = session.createCriteria(MyEmployee.class);
criteria.add(Restrictionss.eq("id", 1)).add(Restrictions.eq("name", "myName");
MyEmployee e = (MyEmployee) criteria.uniqueResult();
e.setSalary(5000);
session.saveOrUpdate(e);

顺便说一下,在默认刷新模式下,当您获取对象并对其进行更新时,该对象将在会话结束时自动保留(如果您不使用StatelessSession).

标签:orm,hibernate,sql-update,dao,java
来源: https://codeday.me/bug/20191031/1974649.html