2017-04-11 29 views
1
構建一個INSERT查詢

我試圖將數據與如何在JPA

Query query = em.createQuery("INSERT INTO TestDataEntity (NAME, VALUE) VALUES (:name, :value)"); 
query.setParameter("name", name); 
query.setParameter("value", value); 
query.executeUpdate(); 

插入表中有列(名稱,值)並獲得以下異常:

ERROR org.hibernate.hql.internal.ast.ErrorCounter - line 1:42: unexpected token: VALUES 

此外,我無法使用本機查詢插入記錄:

Query query = em.createNativeQuery("INSERT INTO TEST_DATA (NAME, VALUE) VALUES (:name, :value);"); 
query.setParameter("name", name); 
query.setParameter("value", value); 
query.executeUpdate(); 

A諾特爾異常被拋出:

javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement 

的問題是:

  • 有什麼不對的查詢字符串?

非常感謝。

+3

瞭解JPA。你在做什麼是SQL – Jens

+0

在JPA你安裝對象,並使用entitymanagers持久方法來保存它們 – Jens

+0

@Jens:如果我做選擇或更新或刪除類似於上述,一切都執行,因爲他們應該是,然後有什麼問題這個查詢? – Armine

回答

4

我解決了這個問題。

this

有一個在JPA沒有INSERT語句。

但我可以用本機查詢來解決問題:我錯誤地放了一個冗餘;在查詢結束時,通過刪除它解決問題。

1

我發現這裏筆者使用Insert在本地查詢(firstsecond)兩個例子。然後,您的查詢可能是:

Query query = em.createQuery("INSERT INTO TestDataEntity (NAME, VALUE) VALUES (?, ?)"); 
query.setParameter(1, name); 
query.setParameter(2, value); 
query.executeUpdate(); 

試試這個。

+0

正如我在我的回答中提到的,我能夠使用本地查詢將數據插入到表中。還有一個問題:多餘的「;」是在查詢的最後,這是造成這個問題。一旦我刪除它,本地查詢按預期工作。無論如何,非常感謝答案。 – Armine