我面临着与本地查询一个奇怪的事情:JPA和原生查询
如果我想使用一个名为原生查询像下面
@NamedNativeQuery(name = "native_count_avg_guest_quizzes", resultClass = java.math.BigDecimal.class, query = "select avg(c) as r from ((select count(*) as c from user_quiz uq join user u on (uq.user_id = u.id) where u.status = 'temporary' group by u.id) as res)")
应用程序不能运行,我有
org.hibernate.HibernateException: Errors in named queries: native_count_avg_guest_quizzes_
但是,如果我不使用NamedNativeQuery和仅仅创建如下所示的动态本地查询相同的查询工作正常:
entityManager.createNativeQuery(
"select avg(c) as r from ((select count(*) as c from user_quiz uq join user u on (uq.user_id = u.id) where u.status = 'temporary' group by u.id) as res)")
.getSingleResult()
为什么?我在做什么错了NamedNativeQuery?由于
更新: 实体类如下
@Entity
@Table(name = "user_quiz")
@NamedNativeQueries({
@NamedNativeQuery(name = "native_count_avg_guest_quizzes", resultClass = java.math.BigDecimal.class, query = "select avg(c) as r from ((select count(*) as c from user_quiz uq join user u on (uq.user_id = u.id) where u.status = 'temporary' group by u.id) as res)")
})
@NamedQueries({
@NamedQuery(name = "list_clients_quizzes", query = "select uq from UserQuiz uq where uq.quiz.client.id = :clientId"),
.......
})
public class UserQuiz extends Measurable {
.......
}
你是否将类标记为@Entity或@MappedSuperclass? – user2800708
@ user2800708我做到了。事情是这个类有很多hql查询没有任何问题。这个问题只发生在这个本地查询中。我已经用实体类定义更新了这个问题以防万一。这个想法是:如果原生查询是动态创建的,则完全相同。我认为问题不在于实体定义。我认为问题出在NamedNativeQueries处理的方式 – jjd