我有一个数据库表警报,并且正在使用 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/