Java Hibernate:找不到查询类的持久类,但映射是正确的
这个问题已经被问过很多次了,但我还没有找到解决我问题的方法,因为乍一看一切似乎都是对的。使用此Hibernate设置时存在配置问题:Java Hibernate:找不到查询类的持久类,但映射是正确的,java,mysql,hibernate,ejb-3.0,Java,Mysql,Hibernate,Ejb 3.0,这个问题已经被问过很多次了,但我还没有找到解决我问题的方法,因为乍一看一切似乎都是对的。使用此Hibernate设置时存在配置问题: hibernate核心:5.2.11.1最终版本 hibernate-jpa-2.1-api:1.0.0.Final hibernate commons注释:5.0.1.Final 当我尝试执行一个查询时,控制台中会出现一个警告,提示找不到查询类的持久类,但不会抛出错误,也不会从数据库中检索数据,尽管它应该返回30多个条目 09:56:58,203 INFO
- hibernate核心:5.2.11.1最终版本
- hibernate-jpa-2.1-api:1.0.0.Final
- hibernate commons注释:5.0.1.Final
09:56:58,203 INFO [org.hibernate.Version] (default task-46) HHH000412: Hibernate Core {5.2.11.Final}
09:56:58,206 INFO [org.hibernate.cfg.Environment] (default task-46) HHH000206: hibernate.properties not found
09:56:58,348 INFO [org.hibernate.annotations.common.Version] (default task-46) HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
09:56:58,397 WARN [org.hibernate.orm.connections.pooling] (default task-46) HHH10001002: Using Hibernate built-in connection pool (not for production use!)
09:56:58,398 INFO [org.hibernate.orm.connections.pooling] (default task-46) HHH10001005: using driver [com.mysql.cj.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/db_motor?useSSL=false&autoReconnect=true]
09:56:58,398 INFO [org.hibernate.orm.connections.pooling] (default task-46) HHH10001001: Connection properties: {user=admin, password=****}
09:56:58,398 INFO [org.hibernate.orm.connections.pooling] (default task-46) HHH10001003: Autocommit mode: false
09:56:58,400 INFO [org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl] (default task-46) HHH000115: Hibernate connection pool size: 10 (min=1)
09:56:58,647 INFO [org.hibernate.dialect.Dialect] (default task-46) HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
09:56:58,958 WARN [org.hibernate.hql.internal.QuerySplitter] (default task-46) HHH000183: no persistent classes found for query class: SELECT respuestas FROM mr.hibernate.beans.MR_RespuestasHBean respuestas
09:56:58,959 INFO [org.hibernate.hql.internal.QueryTranslatorFactoryInitiator] (default task-46) HHH000397: Using ASTQueryTranslatorFactory
如果我正确解释了在本网站上找到的信息,那么关于hibernate.properties not found的警告似乎没有任何影响
hibernate.cfg.xml文件:
表定义:
CREATE TABLE t_respuestas
(
COD_RESPUESTA int PRIMARY KEY NOT NULL
)
;
CREATE UNIQUE INDEX PRIMARY ON t_respuestas(COD_RESPUESTA)
;
用于获取查询的代码如下:
session = getSession(HibernateUtil.configurationFileMySql);
session.beginTransaction();
StringBuffer hql = new StringBuffer();
StringBuffer select = new StringBuffer();
select.append("SELECT respuestas");
StringBuffer from = new StringBuffer();
from.append(" FROM "+ MR_RespuestasHBean.class.getName() +" respuestas");
hql.append(select);
hql.append(from);
@SuppressWarnings("unchecked")
Query<MR_RespuestasHBean> query = session.createQuery(hql.toString());
listado = query.list();
关于环境的一些信息:
- JBoss EAP7
- JDK8
- MySql连接器6.0.6
- Hibernate部分位于EJB3项目中
- hibernate核心:4.2.0.Final
- hibernate-jpa-2.0-api:1.0.1.Final
- hibernate commons注释:4.0.1.Final
非常感谢任何关于问题原因的线索。查询类似于:“从mr.hibernate.beans.mr_RespuestasHBean respuestas中选择respuestas”,表名为“T_respuestas”。缺少“t”吗?您应该从“t_RESPUESTAS”而不是“类名”中选择…看起来hibernate无法解析您的实体,您可以发布完整的MR_RespuestasHBean类吗?谢谢您的评论。我将查询更改为T_RESPUESTAS,但它抛出了一个未映射的类错误。在我的本地开发中,我将数据库表更改为一个只有一个字段的表,并将HibernateBean保留为一个字段,以便能够更好地调试问题,我将问题解释改编为该场景。我没有使用T_RESPUESTAS,而是将实体映射更改为T_RESPUESTAS,因为当我从MySql创建脚本时,显示的是表名。不过还是一样的错误。好吧,我回到了一些对我有效的旧的Hibernate配置设置,现在我让所有的东西都正常工作了,所以这可能与错误的Hibernate库设置有关。我已经编辑了上面列出的信息,如果有人能够指出不正确的配置是什么,请让我知道。非常感谢。查询类似于:“从mr.hibernate.beans.mr_RespuestasHBean respuestas中选择respuestas”,表名为“T_respuestas”。缺少“t”吗?您应该从“t_RESPUESTAS”而不是“类名”中选择…看起来hibernate无法解析您的实体,您可以发布完整的MR_RespuestasHBean类吗?谢谢您的评论。我将查询更改为T_RESPUESTAS,但它抛出了一个未映射的类错误。在我的本地开发中,我将数据库表更改为一个只有一个字段的表,并将HibernateBean保留为一个字段,以便能够更好地调试问题,我将问题解释改编为该场景。我没有使用T_RESPUESTAS,而是将实体映射更改为T_RESPUESTAS,因为当我从MySql创建脚本时,显示的是表名。不过还是一样的错误。好吧,我回到了一些对我有效的旧的Hibernate配置设置,现在我让所有的东西都正常工作了,所以这可能与错误的Hibernate库设置有关。我已经编辑了上面列出的信息,如果有人能够指出不正确的配置是什么,请让我知道。非常感谢。
CREATE TABLE t_respuestas
(
COD_RESPUESTA int PRIMARY KEY NOT NULL
)
;
CREATE UNIQUE INDEX PRIMARY ON t_respuestas(COD_RESPUESTA)
;
session = getSession(HibernateUtil.configurationFileMySql);
session.beginTransaction();
StringBuffer hql = new StringBuffer();
StringBuffer select = new StringBuffer();
select.append("SELECT respuestas");
StringBuffer from = new StringBuffer();
from.append(" FROM "+ MR_RespuestasHBean.class.getName() +" respuestas");
hql.append(select);
hql.append(from);
@SuppressWarnings("unchecked")
Query<MR_RespuestasHBean> query = session.createQuery(hql.toString());
listado = query.list();
Caused by: org.hibernate.hql.internal.ast.QuerySyntaxException: MR_RespuestasHBean is not mapped