2017-03-02 103 views
1

是否可以運行不返回resultSet或不是INSERT或UPDATE類型的腳本的SQL腳本?使用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)"); 

...但當然,這只是創建查詢,如何執行呢?我只能找到不同類型resultSets的getter和Query的executeUpdate方法。如何運行上面創建的查詢來重新啓動序列?

回答

2

你們有些人在Query看到實際執行的查詢方法,e.g Query.getResultList

getResultList()

執行SELECT查詢和非類型化的 列表返回查詢結果。

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

更新:在你的情況下,查詢結束是一個ALTER使你想通了,相關的方法將是executeUpdate()返回沒有列表或價值,但受影響的行數。

INT的executeUpdate()

執行UPDATE或DELETE語句。

int altered = q.executeUpdate(); 
+0

是的,但在這種情況下,它拋出一個異常:com.microsoft.sqlserver.jdbc.SQLServerException:聲明沒有返回結果集。 –

+0

你可以用'getSingleResult()'來代替嗎? – Berger

+1

這也沒有效果。 q.executeUpdate();工作:) –