2017-12-27 9 views
2

Java Spring MVCアプリケーションでOracleデータベースでHibernate Query Language(HQL)を使用しています。私は、このようにHQL更新クエリを記述している:hibernate hql - 更新クエリ実行後に更新された行IDリストを返す

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でこれを行う方法はありますか?

答えて

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

YCF_L、ありがとう。連結SQLは悪いです。 –

関連する問題