JPA问题解决(1)--org.hibernate.jpa.internal.QueryImpl cannot be cast to javax.management.Query报错问题

来源:互联网 发布:wpf 实时显示数据 编辑:程序博客网 时间:2024/06/16 05:56

问题描述

在使用JPA的createQuery()方法时报出以下错误:

org.hibernate.jpa.internal.QueryImpl cannot be cast to javax.management.Query

截图如下:
queryerror

运行环境

JPA + postgreSQL + maven

解决方法

原来的代码如下:

Query query = (Query) em.createQuery("select person from Person person where person.name = :name");

解决方法改为如下:

javax.persistence.Query query = em.createQuery("select person from Person person where person.name = :name");

也就是将生成的query类型改为javax.persistence.Query类型.

原因解析

原因很简单,通过后台报错就可以得出:createQuery方法生成的query对象是org.hibernate.jpa.internal.QueryImpl类型的,在这里无法强制转换成javax.management.Query类型的,所以将其转换成javax.persistence.Query类型的即可.

问题延展

通过以上分析,下面的这些问题应该就是同一类问题了:
1.java.lang.ClassCastException: org.hibernate.internal.SQLQueryImpl cannot be cast to java.util.List
2.ClassCastException: org.hibernate.internal.SQLQueryImpl cannot be cast to org.hibernate.internal.QueryImpl

0 0