如何使用MySQL Hibernate解决意外令牌?

时间:2017-10-20 10:47:11

标签: mysql hibernate

我得到以下错误

org.hibernate.hql.internal.ast.QuerySyntaxException:意外的令牌值:第1行第161列附近的值。

[insert into shop_information(storeName, ownername, license, email, dlnumber, gst, pan, pincode, phonenumber, mobile, fax, cst, phone, district, state, country) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)]

1 个答案:

答案 0 :(得分:0)

你必须使用

session.createSQLQuery(SQL_QUERY);

session.createQuery(SQL_QUERY);

HQL仅支持从另一个表插入。

e.g。

INSERT INTO Entity properties_list select_statement.

如果您不想使用像

这样的标准插入语句
INSERT INTO Table properties_list values ( :vals)

你需要

session.createSQLQuery(SQL_QUERY)

编辑,回答评论:

我认为参数是基于0的,所以尝试从0开始参数:

query.setParameter(0,storeName);
query.setParameter(1,ownerName);
etc...

但更好的方法是使用命名参数:

sessionFactory.getCurrentSession()
  .createSQLQuery("update table set field = 1 where id = :id")
  .setParameter("id", someId)
  .executeUpdate();