Bagaimana cara membuat kueri sisipan di JPA

Saya mencoba memasukkan data ke dalam tabel yang memiliki kolom (NAMA, NILAI) dengan

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

dan mendapatkan pengecualian berikut:

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

Juga, saya juga tidak bisa menyisipkan record menggunakan kueri asli:

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

Pengecualian lain dilemparkan:

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

Pertanyaannya adalah:

  • Apa yang salah dengan string kueri?

Terima kasih banyak.

Larutan

Saya memecahkan masalahnya.

Menurut ini,

Tidak ada pernyataan INSERT di JPA.

Tapi saya bisa menyelesaikan masalah dengan query asli: Saya telah keliru meletakkan ; yang berlebihan di akhir query, sehingga masalah ini diselesaikan dengan menghapusnya.

Komentar (0)

Saya menemukan dua contoh di mana penulis menggunakan sisipan dalam kueri asli (pertama dan kedua). Kemudian, kueri Anda bisa jadi:

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

Coba ini.

Komentar (1)

Saya bisa melakukan ini menggunakan cara di bawah ini - Saya hanya memiliki nama tabel Bike dengan 2 bidang id dan nama. Saya menggunakan cara di bawah ini untuk memasukkannya ke dalam database.

Query query = em.createNativeQuery("INSERT INTO Bike (id, name) VALUES (:id    , :name);");
em.getTransaction().begin();
query.setParameter("id", "5");
query.setParameter("name", "Harley");
query.executeUpdate();
em.getTransaction().commit();
Komentar (3)