gpt4 book ai didi

java - 如何使用 setMaxResults 更新 hibernate 查询?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:22:20 24 4
gpt4 key购买 nike

我希望这是合适的部分,我对这段代码有疑问

Transaction transaction = session.beginTransaction(); 
Query query = session.createQuery("update database set floop= :ctrl1" +" where ctrl= :ctrl2 ").setMaxResults(2);
query.setMaxResults(2);
query.setParameter("ctrl1",3);
query.setParameter("ctrl2", 5);

我通过 setMaxResults(2) 请求只对前两个进行更新,他在我做的时候更新了所有记录有什么问题吗?感谢您的帮助

我想使用session.createSQLQuery,但我不知道该怎么做。

最佳答案

这个答案是发布延迟,但对于正在使用 HQL 限制更新数据库中的行数的其他用户可能会有所帮助

Unfortunatly setMaxResults() do not work update and delete hibernate query. It works only select criteria.

根据 HQL,没有可用的特定解决方案,您希望使用限制数量更新行,然后按照以下步骤操作

  1. 编写一个 HQL 以选择具有条件或范围的所有行
    设置最大结果。它会返回一个有限制的列表对象。
  2. 然后更新特定属性(Property you want to update)和通过 session.update() 方法再次存储这些行的对象。

我假设表名与 map Database 类并且有两个变量 ctrlfloop 以及 getter 和 setter(< em>根据你的问题)

            List<Database> list = new ArrayList<>();
Transaction transaction = session.beginTransaction();

//Fetching record with limit 2 using setMaxResults()
int setlimit = 2;
String hql_query = "from Database where ctrl = :ctrl2";
Query select_query = session.createQuery(hql_query).setMaxResults(setlimit);
select_query.setParameter("ctrl2", 5);
list = select_query.list();

//iterating list and setting new value to particuler column or property
int result;
if (list != null) {
for (Database element : list) {
element.setFloop(ctrl1);
//Here is updating data in database
session.update(element);
}
result = list.size();
} else {
result = 0;
}
System.out.println("Rows affected: " + result);

transaction.commit();

关于java - 如何使用 setMaxResults 更新 hibernate 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12284814/

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