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

ham*_*med 5 java oracle hibernate hql

我在Java spring MVC应用程序中将Hibernate Query Language(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();
Run Code Online (Sandbox Code Playgroud)

executeUpdate()方法返回更新的行数。但是我想在执行更新查询后获取更新行的ID的列表。HQL有什么方法可以做到这一点吗?

小智 5

据我所知,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();
Run Code Online (Sandbox Code Playgroud)

可能oracle有类似的功能,这会对你有所帮助。