【问题标题】:EntityManager create query show unexpected token:EntityManager 创建查询显示意外令牌:
【发布时间】:2016-03-21 13:21:53
【问题描述】:

我正在使用 spring 和 hibernate,并使用 JPG 进行数据库访问。使用namedQuery 时出现“意外令牌”错误,但如果我直接在entityManager 的create 方法中编写查询,则会给出正确的结果。

这是我的 pojo 和检索用户名的查询:

 @NamedQueries(
    @NamedQuery( name="getUserName" , query="select u.name from User u")
  })

@Entity
@Table( name ="user")
public class User {
    @Id
    @Column( name="user_id")
    private int id;
    @Column( name="user_name")
    private String name;
    //getter setter
}

这是我要检索用户名的代码。

entityManager.createQuery("getUserName").getResultList();

它会产生这个错误:

org.hibernate.hql.internal.ast.ErrorCounter: line 1:1: unexpected token: getUserName
! antlr.NoViableAltException: unexpected token: getUserName

当我在 entityManager.createQuery("write same query here ") 中编写相同的查询时,它可以工作。但我想在命名查询中编写查询并在需要时访问它。我正在使用 spring 和 hibernate 集成。为什么在entityManager 的createquery 方法中使用namedquery 时会显示意外令牌?

【问题讨论】:

    标签: mysql spring hibernate jpa


    【解决方案1】:

    em.createQuery 应该接受 JPQL。你应该这样做

    em.createNamedQuery("getUserName");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 2012-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多