hibernate hql - 执行更新查询后返回更新的行id列表

问题描述 投票:3回答:1

我在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中有没有办法做到这一点?

java oracle hibernate hql
1个回答
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有类似的功能,这将对你有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.