Hibernate HQL - 执行更新查询后返回更新行的ID列表

8

我正在使用Hibernate查询语言(HQL)与Oracle数据库在我的Java Spring MVC应用程序中。我已经编写了一个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 中有没有这样做的方法?

2个回答

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();

也许 Oracle 有类似的功能,这可能会对您有所帮助。

这个有文档吗?Mysql 可以做类似的事情吗?我的问题 - https://stackoverflow.com/questions/62819457/hibernate-how-to-retrieve-affected-ids-list-after-query-update - Sandeepan Nath

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接