我在Java spring MVC应用程序中使用Hibernate查询语言(HQL)和Oracle数据库。我已经用这种方式编写了一个HQL更新查询:
String hql = "update " + MyModel.class.getName() + " e set e.field = " + value + " where ..."
//Acquiring session
...
Query query = session.createQuery(hql);
int result = query.executeUpdate();
executeUpdate()
方法返回更新的行数。但是我希望在执行更新查询后获得更新行的ID列表。有没有办法在HQL中执行此操作?
答案 0 :(得分:1)
据我所知,JPA / Hibernate中没有这样的功能。但您可以创建本机查询并使用本机SQL。我不知道oracle,但在PostgreSQL中我会写:
String sql = "update table set field = :values where ... returning id";
Query query = session.createNativeQuery(sql);
query.setParameter("value", value);
List ids = query.list();
可能是oracle有类似的功能,这对你有帮助。
答案 1 :(得分:0)
Blaze-Persistence是一个在JPA / Hibernate之上工作的库,它对此提供了支持。