gpt4 book ai didi

java - Hibernate 更新查询问题

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:21 25 4
gpt4 key购买 nike

对于这个更新查询

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() 进行更新?是否可以在 hibernate 状态下这样做?

最佳答案

您必须先获取您的对象,有两种方式:

1- 高级质量语言

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);

顺便说一下,在默认刷新模式下,当您获取对象并更新它时,它会在 session 结束时自动持久化(如果您没有使用 StatelessSession)。

关于java - Hibernate 更新查询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14723528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com