mysql - Hibernate 与 SQL :Best way to Update column of all rows in a table

标签 mysql hibernate sql-update

我有一个数据库表警报,并且正在使用 Hibernate。我正在使用 mySQL。

我想更新数据库的所有列。 表名是alert,表的映射类是Alert。

使用 SQLQUERY:

session.beginTransaction();
session.createSQLQuery("update alert set retryCount=3"); 
session.getTransaction().commit();
session.close();

不工作。

使用 HQL 使用动态更新属性

Query query=session.createQuery("from Alert");
for(int i=0;i<query.list().size();i++){
   Alert alert=(Alert)query.list().get(i);
   alert.setretryCount(3);
   session.update(alert);
 }
session.getTransaction().commit();

正在工作

虽然第二个正在工作,但我认为它比普通的 SQL 查询需要更多的时间。是这样吗?使用 hibernate 时更新所有行的一组列的最佳方法是什么。

最佳答案


你好 !你试过这个吗?

session.beginTransaction();
String queryString = "update Alert a set a.retryCount=3"
Query query = session.createQuery(queryString);
session.executeUpdate(query);
session.close();

这是hibernate官方文档上的。这是使用实体作为对象而不是 SQL 表的 HQL 请求。我认为这样做更好,因为您不需要关心您的数据库模型。

您能给我们显示非工作方法的堆栈跟踪吗?

关于mysql - Hibernate 与 SQL :Best way to Update column of all rows in a table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17524210/

相关文章:

mysql - 安装 db-mysql

php - 'column' 的默认值无效

java - 在 EJB mdb 中初始化 Hibernate SessionFactory?

mysql - 无法更新触发器中的其他表

sql - 在sql server中使用case语句更新多列

mysql - 错误 #1442 MySQL - 创建触发器

mysql - 我的sql查询只检索重复记录

mysql - Spring Boot hibernate 错误: Error executing DDL via JDBC Statement with database name has bar symbol

java - 存储库查询和实体实例变量名称

join - 使用连接更新 Redshift 表