Hibernate查询与过滤:HQL批量操作、原生SQL及过滤器应用
1. HQL批量更新与删除
HQL(Hibernate Query Language)提供了强大的批量更新和删除功能,通过 Query<R>
接口的 executeUpdate()
方法可以执行HQL的 UPDATE
或 DELETE
语句。该方法返回一个整数,表示受更新或删除操作影响的行数。
1.1 批量更新
HQL的更新语句基于SQL的 UPDATE
语句,但在编写时不需要使用别名,直接在类名后使用 set
关键字。以下是一个示例:
String hql = "update Supplier set name = :newName where name = :name";
Query query = session.createQuery(hql);
query.setString("name","SuperCorp");
query.setString("newName","MegaCorp");
int rowCount = query.executeUpdate();
System.out.println("Rows affected: " + rowCount);
//查看更新结果
Query<Supplier> q = session.createQuery("from Supplier", Supplier.cla