org.hibernate.hql.internal.ast.QuerySyntaxException:表未映射[来自表]

2024-03-25

我正在尝试学习使用 MySQL 使用 Hibernate,在出现一系列错误之前和之后我从未使用过它,我最终陷入了困境:

Exception in thread "main" org.hibernate.hql.internal.ast.QuerySyntaxException: country is not mapped [from country]
    at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:180)
    at org.hibernate.hql.internal.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:110)
    at org.hibernate.hql.internal.ast.tree.FromClause.addFromElement(FromClause.java:93)
    at org.hibernate.hql.internal.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:324)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3291)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:3180)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:706)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:562)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
    at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
    at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:221)
    at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:199)
    at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1735)
    at org.hibernate.tutorial.hbm.Test.main(Test.java:37)

我尝试过其他问题的可能解决方案,但什么也没有,它不起作用。这是我到目前为止所做的:

休眠配置文件(文件夹源)

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC 
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration> 
    <session-factory> 
        <!-- Database connection settings --> 
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
        <property name="connection.url">jdbc:mysql://localhost:3306/stock</property> 
        <property name="connection.username">root</property> 
        <property name="connection.password">root</property>   

        <!-- JDBC connection pool (use the built-in) --> 
        <property name="connection.pool_size">1</property>   

        <!-- SQL dialect --> 
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>   

        <!-- Echo all executed SQL to stdout --> 
        <property name="show_sql">true</property>   
        <property name="format_sql">true</property>
        <property name="hbm2ddl.auto">create</property>

        <!-- configuration pool via c3p0-->
        <property name="c3p0.acquire_increment">1</property>
        <property name="c3p0.idle_test_period">3600</property> <!-- seconds -->
        <property name="c3p0.min_size">3</property>
        <property name="c3p0.max_size">5</property>
        <property name="c3p0.max_statements">0</property>
        <property name="c3p0.timeout">3605</property> <!-- seconds -->
        <property name="hibernate.c3p0.preferredTestQuery">select 1;</property>

        <!-- Mapping files --> 
        <!--<mapping resource="country.hbm.xml"/> -->
    </session-factory> 
</hibernate-configuration>

国家/地区.hbm.xml(文件夹 *src\main\resources\org\hibernate\tutorial\hbm*)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
    <class name="org.hibernate.tutorial.hbm.country" table="country">
        <id name="id_country">
        <property name="country"/>
    </class>
</hibernate-mapping>

国家.java

package org.hibernate.tutorial.hbm;

public class country {
    private int id_country;
    private String country;

    public int getId_country() {
        return id_country;
    }
    public void setId_country(int id_country) {
        this.id_country = id_country;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }

}

测试.java

package org.hibernate.tutorial.hbm;

import java.util.List;

import org.hibernate.SessionFactory;
import org.hibernate.Session;
//import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tutorial.hbm.country; /* required for test function only */

public class Test {

    private static final SessionFactory sessionFactory;

        static {
            try {
                // Initialize factory using contents of hibernate.cfg.xml
                sessionFactory = new Configuration().configure().buildSessionFactory();
            } catch (Throwable ex) {
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }

        }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public static void main (String[] args) {

        country mycls = new country();
        /* the id field will auto-increment to a unique value which will distinguish records */
        //mycls.setCountry("My Property");
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        List result = session.createQuery( "from country" ).list();
        for ( country ctry : (List<country>) result ) {
            System.out.println( "Country (" + ctry.getId_country() + ") : " + ctry.getCountry() );
        }
        session.getTransaction().commit();
        session.close(); /* if this test succeeds, you'll find a new record in your MySQL database */

    }

}

- 编辑20130301

我根据你的建议改变了几件事

休眠配置文件

<!-- Mapping files --> 
<mapping resource="org/hibernate/tutorial/hbm/Country.hbm.xml"/>

我重命名并移动了文件 Country.hbm.xml (它是country.hbm.xml)并更改了此

<class name="Country" table="country">
<!-- <class name="org.hibernate.tutorial.hbm.country" table="country"> -->

文件已移至src\org\hibernate\tutorial\hbm

Country.java 类已重命名为 Country.java

最后在 Test.java 中修改了这一行

List result = session.createQuery( "from Country" ).list();
        for ( Country ctry : (List<Country>) result ) {
            System.out.println( "Country (" + ctry.getId_country() + ") : " + ctry.getCountry() );
        }

现在我将此视为错误

Initial SessionFactory creation failed.org.hibernate.InvalidMappingException: Could not parse mapping document from resource org/hibernate/tutorial/hbm/Country.hbm.xml
Exception in thread "main" java.lang.ExceptionInInitializerError
    at org.hibernate.tutorial.hbm.Test.<clinit>(Test.java:21)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource org/hibernate/tutorial/hbm/Country.hbm.xml
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3423)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3412)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3400)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1330)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1730)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1781)
    at org.hibernate.tutorial.hbm.Test.<clinit>(Test.java:18)
Caused by: org.hibernate.MappingException: class Country not found while looking for property: id_country
    at org.hibernate.internal.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:232)
    at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:324)
    at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:449)
    at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:382)
    at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:322)
    at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:173)
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3420)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: Country
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.hibernate.internal.util.ReflectHelper.classForName(ReflectHelper.java:192)
    at org.hibernate.internal.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:228)
    ... 12 more

我感谢您的帮助。谢谢。


Your country.hbm.xml格式错误:

<id name="id_country">

是一个开放标签,永远不会关闭。我怀疑你的意思是:

<id name="id_country"/>

(注意结束斜杠)。

然后(正如@RameshK指出的那样),你必须添加

<mapping resource="org/hibernate/tutorial/hbm/country.hbm.xml"/>

to your hibernate.cfg.xml file.

一个小问题:根据正常的编码约定,Java 中的类是大写的,所以我会改变country to Country.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

org.hibernate.hql.internal.ast.QuerySyntaxException:表未映射[来自表] 的相关文章

  • 从剪贴板获取图像 Awt 与 FX

    最近 我们的 Java FX 应用程序无法再从剪贴板读取图像 例如 用户在 Microsofts Paint 中选择图像的一部分并按复制 我不是在谈论复制的图像文件 它们工作得很好 我很确定它过去已经有效 但我仍然需要验证这一点 尽管如此
  • org.postgresql.util.PSQLException:协议错误。会话设置失败

    我知道这些类型的问题已经存在 但提供的解决方案对我不起作用 在我的应用程序中 没有版本不匹配的黑白驱动程序和 PostgreSQL 服务器 我还没有找到任何其他解决方案 我正在使用 PostgreSQL 服务器 9 4 和 postgres
  • _mysql_connector.MySQLInterfaceError:命令不同步;您现在无法运行此命令 python msql.connector

    我有一个功能 您可以在下面看到 如果运行此函数 我将收到您在标题中看到的错误 您能帮助我吗 不久前我能够用锁解决这个问题 但现在它们不起作用 我知道这与我的连接有关 但我不知道如何解决这个问题 def insertNewValues sel
  • 动画图像视图

    目前我正在开发一款游戏 这是我的游戏的详细信息 用户应选择正确的图像对象 我希望图像从左到右加速 当他们到达终点时 他们应该再次出现在活动中 这是我正在处理的屏幕截图 我有 5 个图像视图 它们应该会加速 您有此类动画的示例代码吗 非常感谢
  • 如何在Gradle中支持多种语言(Java和Scala)的多个项目?

    我正在尝试将过时的 Ant 构建转换为 Gradle 该项目包含约50个Java子项目和10个Scala子项目 Java 项目仅包含 Java Scala 项目仅包含 Scala 每个项目都是由 Java 和 Scala 构建的 这大大减慢
  • 如何使用 Spring MVC 和 Thymeleaf 添加静态文件

    我的问题是如何添加 CSS 和图像文件等静态文件 以便我可以使用它们 我正在使用 Spring MVC 和 Thymeleaf 我查看了有关此主题的各种帖子 但它们对我没有帮助 所以我才来问 根据这些帖子 我将 CSS 和图像文件放在res
  • 中间件 API 的最佳实践是什么? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们正在开发一个中间件 SDK 采用 C 和 Java 语言 供游戏开发人员 动画软件开发人员 阿凡达开
  • 更新查询增量字段加上 1 codeigniter 函数 [重复]

    这个问题在这里已经有答案了 我想在 codeigniter 项目中将字段值增加到当前值加 1 所以 我做了一个功能 但它不起作用 我的职能是 function increse field by 1 table name fieldToInc
  • 如何获取 Android 中临时文件的文件大小?

    如果我使用 openFileOutput 创建并写入临时文件 写入完成后如何获取文件大小 我希望这可以帮助你 File file new File selectedPath int file size Integer parseInt St
  • Kerberos 缓存票证

    我使用的是 Windows 7 64 位 我创建了一个简单的应用程序来对实现 PrivilegedAction 的类的 run 方法中的文件进行计数 以下是我的 jaas conf 文件 CountFiles com sun securit
  • 尝试在空对象引用上调用虚拟方法“java.lang.String org.jsoup.nodes.Element.ownText()”

    我正在使用下面的代码来获取版本名称 from 应用商店通过使用 jsoup 我正在获取详细信息 但它引发了一些异常 我的代码是 public class ForceUpdateAsync extends AsyncTask
  • NoSuchMethodError:将 Firebase 与应用程序引擎应用程序集成时

    我试图将 firebase 实时数据库与谷歌应用程序引擎应用程序集成 我在调用时收到此错误 gt DatabaseReference ref FirebaseDatabase gt getInstance gt getReference t
  • 为什么 RMI 注册表忽略 java.rmi.server.codebase 属性

    我正在运行 java RMI 的 Hello World 示例 1 我在空文件夹中运行注册表 motta motta laptop tmp rmiregistry 2 我启动 HTTP 服务器以在运行时检索类 下载文件夹包含客户端 服务器的
  • 使用 PHP 和 jSON 从 MySQL 获取 UIImage

    我正在开发一个小型新闻阅读器 它通过对 URL 执行 POST 请求来从网站检索信息 响应是一个带有未读新闻的 JSON 对象 例如 应用程序上的最新新闻的时间戳为 2013 03 01 当用户刷新表时 它会发布 domain com ap
  • setKeyListener 将覆盖 setInputType 并更改键盘

    大家好 我在两个设备之间遇到问题 在实践中使用InputType和KeyListener我正在操纵一个EditText让它从数字键盘接收逗号和数字 有关更多背景信息 请检查我之前的question https stackoverflow c
  • 为什么 Clojure MySQL 查询结果中出现“M”

    我有一个返回一行的 Clojure 查询 下面是返回行 映射 的部分打印输出 employer percent 0 00M premium 621 44M 这两列在mysql表中分别是decimal 5 2 和decimal 7 2 为什么
  • Mysql:计算访问频率

    我有这张桌子 CREATE OR REPLACE TABLE hits ip bigint page VARCHAR 256 agent VARCHAR 1000 date datetime 我想计算每个页面的 googlebot 访问频率
  • 当我在 Java 中输入 IP 时无法连接到我的服务器

    好的 我正在尝试学习 Java 客户端 服务器的内容 并且正在浏览教程代码 如下所示 当我将 localhost 更改为我的 IP 时 它会停止工作 请帮忙 编辑 127 0 0 1 似乎也可以工作 但不是我的真实IP Copyright
  • 条件查询:按计数排序

    我正在尝试执行一个标准查询 该查询返回 stackoverflow 中回答最多的问题 例如常见问题解答 一个问题包含多个答案 我正在尝试使用标准查询返回按每个问题的答案数排序的回答最多的问题 任何人都知道我应该在 hibernate cri
  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat

随机推荐

  • 我正在尝试解决“15 个难题”,但出现“OutOfMemoryError”[已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有没有一种方法可以优化此代码以免耗尽
  • 使用分页 extjs 在组合框中搜索

    您好 我正在尝试在组合框中进行搜索 它正在工作 但仅在当前页面中搜索我也使用分页搜索 我需要在所有页面中搜索而不仅仅是当前页面 任何建议 xtype combo fieldLabel Organization Id name company
  • 将 Streaming Flux 的 WebClient Post 拆分为 JSON 数组

    我正在使用第三方 REST 控制器 它接受 JSON 对象数组并返回单个对象响应 当我使用有限的 WebClient 进行 POST 时Flux代码有效 我认为 因为Flux完成 然而 当Flux可能是无限的 我该怎么办 以数组块形式发布
  • 如何在CSS多列布局中将单列居中

    我有一个使用 CSS 多列布局的元素来显示项目列表 div style text align center div Item 1 div div Item 2 div div Item 3 div div Item 4 div div It
  • 在 C# 中从未知长度的流计算哈希值

    C 中计算未知长度流的 动态 md5 之类哈希的最佳解决方案是什么 具体来说 我想根据通过网络接收的数据计算哈希值 我知道当发送者终止连接时我已经完成接收数据 所以我事先不知道长度 编辑 现在我正在使用 md5 并在保存数据并将其写入磁盘后
  • GitHub 页面上的 AngularJS html5mode 支持

    问题是 does GitHub 页面支持AngularJShtml5mode 我找到了一个www资源 https coderwall com p kfomwa angularjs html5mode on github pages其中指出可
  • 线程不活动时释放资源

    我正在使用BackgroundWorker 在其中我使用foreach循环 在其中创建新线程 等待它完成 然后报告进度并继续foreach循环 这就是我要说的 private void DoWork object sender DoWork
  • springfox-swagger2 UI是否支持一次选择多个文件?

    我使用 Spring Boot 和集成的 swagger ui springfox swagger2 我希望能够选择一次上传多个文件 不幸的是 Swagger UI 似乎不允许这样做 至少不允许我的控制器方法 我的控制器方法签名 ApiOp
  • 过滤包含特定字符串的数据[重复]

    这个问题在这里已经有答案了 我希望过滤包含特定字符串的数据 假设这是我的数据集 dst first second 24 Sienna Zoe Dylan 32 Amber John Noah Sienna 72 Daniel Mike Zo
  • React 代码抛出“TypeError:this.props.data.map 不是函数”

    我刚刚开始用 React 编码 我习惯用 CoffeeScript 编码 我尝试沿着React 文档中提供的教程 http facebook github io react docs tutorial html并为状态更新做了类似的事情 然
  • 如何从 Google Places API 获取 20+ 结果?

    我正在开发一个应用程序 在其中我可以获取用户附近的 ATM 列表 为此 我使用 Google Places API 但每次它只返回 20 个结果 我想获得更多结果 在 API 文档中提到它将返回 20 个结果 但我想知道有什么方法可以获得更
  • Html 渲染不正确,并且没有使用 Ajax.ActionLinks 设置 Viewbag.Title

    ViewStart cshtml Layout Request IsAjaxRequest null Views Shared Layout cshtml 布局 cshtml div AjaxOptions options new Ajax
  • Android 3.0 使用物理键盘设置

    背景 我最近购买了一台摩托罗拉 XOOM 平板电脑以及桌面扩展坞和蓝牙键盘配件 扩展坞和键盘工作得很好 但是当我将平板电脑从扩展坞上取下并远离办公桌时 键盘仍然与设备配对 我必须手动更改设置才能使用软键盘 当我将其放回坞站时也是如此 我需要
  • Java JTable 与 JComboBox

    我试图将 JComboBox 放置在 JTable 的特定列中 我有这段代码 并且它正在工作 model new DefaultTableModel JComboBox
  • facet_wrap 条形图上的条形宽度相等

    我有一个如下所示的数据框 category c rep house 2 rep apartment 4 rep condo 3 sample paste ID seq 1 9 sep group c rep 1 9 rep 2 9 valu
  • 如何在 Ruby 中从数组中随机选择元素而不重复?

    我是编码新手 正在尝试学习 Ruby 我在耙子里工作 我应该使用什么来确保随机选择不会连续重复相同的响应 数组 1 2 3 4 5 task array do array 1 2 3 4 5 ap array sample end With
  • C# 处理事件

    我正在尝试建立一个图书馆 并且我正在尝试了解如何按照我想要的方式实现它 我创建了一个极简示例来向您展示我正在尝试做的事情 using System namespace example public class Car public int
  • Laravel:从 MySQL 查询中获取单个值

    我正在尝试使用 laravel 从 MySQL 数据库获取单个值 但问题是我得到了一个数组 这是我在MySQL命令行中的查询结果 select groupName from users groupName Admin 我的 Laravel
  • 如何阻止 SQLServer 写入无关的内容,例如(1 行受影响)

    是否有一个命令可以在我的 SQL 脚本中运行 以便它停止输出有关运行的每个操作的信息 即我不想看到这个 1 row s affected 1 row s affected 1 row s affected Use SET NOCOUNT O
  • org.hibernate.hql.internal.ast.QuerySyntaxException:表未映射[来自表]

    我正在尝试学习使用 MySQL 使用 Hibernate 在出现一系列错误之前和之后我从未使用过它 我最终陷入了困境 Exception in thread main org hibernate hql internal ast Query