java 异常提示:未找到Map(RESOURCE)

raogr8fs  于 2023-02-14  发布在  Java
关注(0)|答案(2)|浏览(153)

我一直在尝试用一个小例子来实现Hibernate。
下面是我的hibernate.config.xml

<?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>
<property name="connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="connection.url">
jdbc:mysql://localhost:3306/abc
</property>
<property name="connection.username">root</property>
<property name="connection.password"></property>
<property name="dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="show_sql">true</property>
<mapping
resource="HibernateExample/src/HibernateExposed/Resource/Person.hbm.xml"/>
</session-factory>
</hibernate-configuration>

当运行代码时,我收到错误org. hib. Boot .MappingNotFoundException:未找到Map(RESOURCE)。
我尝试如下所示替换Map

<mapping
resource="Resource/Person.hbm.xml"/>

并且还试图将MapXML保持在与hibernate.config.xml相同的位置。

<mapping
resource="Person.hbm.xml"/>

在上述任何一种情况下,代码都不能找到我的Person.hbm.xml。
我的文件夹结构如下所示

我在Stackoverflow上查看了这个错误的所有其他答案,但是没有一个方法解决了这个问题。任何帮助都是非常感谢的。另外,有没有任何方法可以进一步调试到粒度级别?

jvlzgdj9

jvlzgdj91#

请将hibernate.cfg.xml放在src文件夹的根目录下。
并使用

<mapping resource="HibernateExposed/Person.hbm.xml"/>

Hibernate使用ClassLoader.getResourceAsStream(resourcePath)resourcePath加载所有这些文件-是文件的路径
ClassLoader尝试访问IDE中binbuild文件夹的根目录下的文件,或者访问jar的根目录下的文件,或者访问Web应用程序的war/WEB-INF/classes/的根目录下的文件,这些都是类路径的根目录。
bin是Eclipse编译你的文件的文件夹,src文件夹的根被编译到bin文件夹的根,你可以查看。
举个例子
一个月十二个月一次-一个月十三个月一次一个月十四个月一次-一个月十五个月一次

<mapping resource="HibernateExposed/Person.hbm.xml"/>

对应于bin/HibernateExposed/Person.hbm.xml
对于ClassLoader,路径应该没有前导/。Hibernate尝试删除前导/
这样的路径也是有效的

<mapping resource="/HibernateExposed/Person.hbm.xml"/>
    • 更新**

如果不希望hibernate.cfg.xml位于根目录中,可以指定它的路径
new Configuration().configure("HibernateExposed/hibernate.cfg.xml")
如果您使用
new Configuration().configure()
它应该在类路径的根目录中。

kmpatx3s

kmpatx3s2#

这些对我都不起作用,然后我试了这个:-
(在FactoryConfiguration单例类中替换此方法)
私有工厂配置(){配置配置=新配置().configure(“hibernate.cfg.xml”).addAnnotatedClass(类名.类);会话工厂=配置.buildSessionFactory();}

相关问题