2017-03-02 15 views
1

resultSetを返さないSQLスクリプトを実行できますか、またはINSERTまたはUPDATEタイプのスクリプトではありませんか?EntityManagerでSQLコマンドを実行

私は次のことをしようとしている:

Query q = entityManager.createNativeQuery("DECLARE @max int;\n" + 
     "SELECT @max = MAX(customer_number)+1\n" + 
     "FROM organisation\n" + 
     "\n" + 
     "exec('ALTER SEQUENCE organisation_customer_number_seq RESTART WITH ' + @max)"); 

...もちろんそれを実行する方法、クエリを作成し、それ?私は、Queryのための異なるタイプのresultSetsとexecuteUpdateメソッドに対してのみゲッターを見つけることができます。上記のクエリを実行してシーケンスを再開するには?

答えて

2

あなたが実際にクエリを実行Queryに表示方法のいくつか、例えばQuery.getResultList

getResultList()

SELECTクエリを実行し、型なし リストとしてクエリ結果を返します。

List<Object[]> results = q.getResultList(); 

UPDATE:クエリがALTERをされて終わるあなたのケースでは、あなたがそれを考え出したように、関連するメソッドがリストまたは値が、影響を受けた行数を返しませんexecuteUpdate()になります。

int型のexecuteUpdate()

更新またはDELETE文を実行します。

int altered = q.executeUpdate(); 
+0

はい、しかし、この場合には例外をスロー:ます。com.microsoft.sqlserver.jdbc.SQLServerExceptionを:ステートメントが結果セットを返しませんでした。 –

+0

代わりに 'getSingleResult()'を試してみることができますか? – Berger

+1

それもうまくいきませんでした。 q.executeUpdate();働いていた:) –

関連する問題