我有一个数据库表警报,我正在使用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时更新所有行的一组列的最佳方法。
答案 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请求。我认为最好这样做,因为你不需要关心你的数据库模型。
您能否为非工作方法提供显示的堆栈跟踪?