Hibernate vs SQL:更新表中所有行的列的最佳方法

时间:2013-07-08 10:19:40

标签: 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时更新所有行的一组列的最佳方法。

1 个答案:

答案 0 :(得分:3)


嗨!你试过这个吗?

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

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

您能否为非工作方法提供显示的堆栈跟踪?