我一直在尝试用一个小例子来实现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上查看了这个错误的所有其他答案,但是没有一个方法解决了这个问题。任何帮助都是非常感谢的。另外,有没有任何方法可以进一步调试到粒度级别?
2条答案
按热度按时间jvlzgdj91#
请将
hibernate.cfg.xml
放在src
文件夹的根目录下。并使用
Hibernate使用
ClassLoader.getResourceAsStream(resourcePath)
resourcePath
加载所有这些文件-是文件的路径ClassLoader
尝试访问IDE中bin
或build
文件夹的根目录下的文件,或者访问jar
的根目录下的文件,或者访问Web应用程序的war/WEB-INF/classes/
的根目录下的文件,这些都是类路径的根目录。bin
是Eclipse编译你的文件的文件夹,src
文件夹的根被编译到bin
文件夹的根,你可以查看。举个例子
一个月十二个月一次-一个月十三个月一次一个月十四个月一次-一个月十五个月一次
对应于
bin/HibernateExposed/Person.hbm.xml
对于
ClassLoader
,路径应该没有前导/
。Hibernate尝试删除前导/
。这样的路径也是有效的
如果不希望
hibernate.cfg.xml
位于根目录中,可以指定它的路径new Configuration().configure("HibernateExposed/hibernate.cfg.xml")
如果您使用
new Configuration().configure()
它应该在类路径的根目录中。
kmpatx3s2#
这些对我都不起作用,然后我试了这个:-
(在FactoryConfiguration单例类中替换此方法)
私有工厂配置(){配置配置=新配置().configure(“hibernate.cfg.xml”).addAnnotatedClass(类名.类);会话工厂=配置.buildSessionFactory();}