Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate:找不到查询类的持久类,但映射是正确的_Java_Mysql_Hibernate_Ejb 3.0 - Fatal编程技术网

Java 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设置时存在配置问题:

  • 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  [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