【发布时间】: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