【问题标题】:Hibernate - unexpected token: in while update休眠 - 意外令牌:在更新时
【发布时间】:2014-02-02 10:19:48
【问题描述】:

我收到此错误,我无法确定我的查询是否有任何错误。

错误是:

ERROR: line 1:8: unexpected token: in line 1:8: unexpected token: in

at org.hibernate.hql.internal.antlr.HqlBaseParser.updateStatement(HqlBaseParser.java:232).......</code>

我正在尝试通过 HQL 更新表,以下是该代码:

Query query = session.createQuery("update Order set paymentStatusId = :pid where id = :id");
    query.setParameter("pid", paymentStatusId).setParameter("id", orderId);
query.executeUpdate();

我的 POJO 如下:

@Entity
@Table(name = "\"订单\"")
公共类 Order 实现 Serializable{
    //getter-setter
}

【问题讨论】:

  • 也许它把类 Order 和关键字 ORDER 混淆了
  • @polypiel:是的,可能是。有什么解决方法吗?

标签: hibernate


【解决方案1】:

Order 是 HQL 的保留字。您可以尝试更改实体名称或将实体名称括在括号中(未经测试): http://www.javaplex.com/blog/hibernate-how-to-use-databases-reserved-keywords-in-hql-and-pojos/

【讨论】:

  • Hibernate 不允许您在 HQL 中除了实体名称之外放置方括号,会引发错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多