当我尝试使用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>
我的项目结构是:
我已将映射文件BOOKS.hbm.xml放在资源文件夹中,将Hibernate.cfg.xml放在META / classes文件夹中
答案 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.xml
和classes
- 将所有xml
从classes
移至resources
。
答案 2 :(得分:0)
您需要在Hibernate.cfg.xml中提供正确的hbm文件映射路径 所以只需替换为
<mapping resource="resources/Books.hbm.xml"/>
因为您的hbm文件位于资源文件夹中,所以您需要提供相同的路径。