2

我有一个数据库表警报并且正在使用 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 查询需要更多时间。是这样吗?在使用休眠时更新所有行的一组列的最佳方法是什么。

4

1 回答 1

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 请求。我认为这样做更好,因为您不需要关心您的数据库模型。

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

于 2013-07-08T10:36:18.887 回答