gpt4 book ai didi

java - 组织.hibernate.boot.MappingNotFoundException : Mapping (RESOURCE) not found

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:15:05 26 4
gpt4 key购买 nike

我一直在尝试用一个小例子来实现 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.hibernate.boot.MappingNotFoundException: Mapping (RESOURCE) not found。

我尝试如下替换映射

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

还尝试将映射 xml 与 hibernate.config.xml 保持在同一位置。

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

在上述任何一种情况下,代码都可以找到我的Person.hbm.xml。

我的文件夹结构如下所示

enter image description here

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

最佳答案

请将 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 文件夹的根目录。你可以检查一下。

举个例子

configure("hibernate.cfg.xml")——bin/hibernate.cfg.xml configure("xxx/hibernate.cfg.xml") bin/xxx/hibernate.cfg.xml

 <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")

如果你使用

新配置().configure()

它应该在类路径的根目录中。

关于java - 组织.hibernate.boot.MappingNotFoundException : Mapping (RESOURCE) not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37006384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com