无法从资源Books.hbm.xml解析映射文档

时间:2016-02-10 06:43:34

标签: java hibernate

当我尝试使用hibernate在数据库中保存对象时,为什么会出现hibernate.invalidmappingexception ..

books.hbm.xml (在资源文件夹内)

<?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="Books" table="books">  
    <id name="id">  
     <generator class="increment"></generator>  
    </id>  
    <property name="name"></property>  
    <property name="author"></property>  
    <property name="count"></property>  
    <property name="description"></property>
  </class>  
 </hibernate-mapping>  

hibernate.cfg.xml中:

    <hibernate-configuration> 
      <session-factory> 
        <property name="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </property> 
        <property name="hibernate.connection.driver_class"> com.mysql.jdbc.Driver </property> 
        <property name="hibernate.connection.url"> jdbc:mysql://localhost/cybage </property> 
        <property name="hibernate.connection.username"> root </property>
        <property name="hibernate.connection.password"> yoga </property>   
        <mapping resource="Books.hbm.xml"/> 
   </session-factory> 
 </hibernate-configuration> 

我的项目结构是

the snapshot of folder structure and files stored...It seems there is something wrong with this

我已将映射文件BOOKS.hbm.xml放在资源文件夹中,将Hibernate.cfg.xml放在META / classes文件夹中

3 个答案:

答案 0 :(得分:1)

尝试替换它:

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

使用:

 <mapping resource="resources/Books.hbm.xml"/>

添加正确的路径。

答案 1 :(得分:1)

您需要在books.hbm.xml

中指定包含完整班级的完整班级名称
<class name="pack.Books" table="books">  

    .... 

</class>

在构建resources之后,您需要在main文件夹中包含WEB-INF/classes文件夹,以便在war中包含所有文件。默认情况下,WEB-INF/classes将位于类路径中。

hibernate.cfg.xml文件夹中有user.hbm.xmlclasses - 将所有xmlclasses移至resources

答案 2 :(得分:0)

您需要在Hibernate.cfg.xml中提供正确的hbm文件映射路径 所以只需替换为

<mapping resource="resources/Books.hbm.xml"/>

因为您的hbm文件位于资源文件夹中,所以您需要提供相同的路径。