如何在 JPA 中构建插入查询

新手上路,请多包涵

我正在尝试将数据插入到具有列 (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

问题是:

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

非常感谢。

原文由 Armine 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 447
2 个回答

我解决了这个问题。

据此

JPA 中没有 INSERT 语句。

但我可以通过本机查询解决问题:我错误地放置了一个多余的 ;在查询的末尾,所以通过删除它解决了问题。

原文由 Armine 发布,翻译遵循 CC BY-SA 3.0 许可协议

我发现了两个示例,作者在本机查询中使用插入( 第一个第二个)。那么,您的查询可能是:

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

尝试这个。

原文由 Máťa - Stitod.cz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题