J'essaie d'insérer des données dans une table comportant des colonnes (NAME, VALUE) with
Query query = em.createQuery("INSERT INTO TestDataEntity (NAME, VALUE) VALUES (:name, :value)");
query.setParameter("name", name);
query.setParameter("value", value);
query.executeUpdate();
et obtenir l'exception suivante:
ERROR org.hibernate.hql.internal.ast.ErrorCounter - line 1:42: unexpected token: VALUES
De plus, je ne peux pas insérer un enregistrement à l'aide d'une requête native non plus:
Query query = em.createNativeQuery("INSERT INTO TEST_DATA (NAME, VALUE) VALUES (:name, :value);");
query.setParameter("name", name);
query.setParameter("value", value);
query.executeUpdate();
Une autre exception est lancée:
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute statement
La question est:
Merci beaucoup.
J'ai résolu le problème.
Selon this ,
Il n'y a pas d'instruction INSERT dans JPA.
Mais je pourrais résoudre le problème avec une requête native: j'ai mis par erreur un redondant; à la fin de la requête, le problème a donc été résolu en le supprimant.
J'ai trouvé deux exemples où l'auteur utilise l'insert dans une requête native ( first et second ). Ensuite, votre requête pourrait être:
Query query = em.createQuery("INSERT INTO TestDataEntity (NAME, VALUE) VALUES (?, ?)");
query.setParameter(1, name);
query.setParameter(2, value);
query.executeUpdate();
Essaye ça.