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:
Terima kasih banyak.
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.
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.
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();