如何在JPA中构造插入查询

时间:2017-04-11 13:36:55

标签: java hibernate jpa entity

我正在尝试将数据插入到包含(NAME,VALUE)

的表格中
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();

抛出了另一个例外:

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

问题是:

  • 查询字符串有什么问题?

非常感谢。

3 个答案:

答案 0 :(得分:11)

我解决了这个问题。

根据this

  

JPA中没有INSERT语句。

但是我可以用原生查询来解决这个问题:我错误地把多余的问题解决了;在查询结束时,通过删除它来解决问题。

答案 1 :(得分:1)

我找到了两个例子,作者在原生查询中使用了插入(firstsecond)。然后,您的查询可能是:

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

试试这个。

答案 2 :(得分:0)

我可以使用以下代码执行此操作-我只有一个具有2个字段id和name的表名称Bike。我使用下面的代码将其插入数据库。

const input = document.querySelector('input');

document.addEventListener('keydown', logKey);

function logKey(e) {

  if(e.code == 'KeyB') {
    var tag = document.querySelector('.batman');
    tag.classList.toggle('active');
  }
}