这两天,遇到这么一个问题,Hibernate不能从资源文件解析映射,报错如下:
Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource wei/college/bean/personMessages.hbm.xml
at org.hibernate.cfg.Configuration.addResource(Configuration.java:523)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1511)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1479)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1458)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1432)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1352)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1338)
at wei.college.bean.CreateTable.main(CreateTable.java:8)
Caused by: org.hibernate.PropertyNotFoundException: field [contents;] not found on wei.college.bean.PersonMessages
at org.hibernate.property.DirectPropertyAccessor.getField(DirectPropertyAccessor.java:112)
at org.hibernate.property.DirectPropertyAccessor.getField(DirectPropertyAccessor.java:119)
at org.hibernate.property.DirectPropertyAccessor.getField(DirectPropertyAccessor.java:104)
at org.hibernate.property.DirectPropertyAccessor.getGetter(DirectPropertyAccessor.java:127)
at org.hibernate.util.ReflectHelper.getter(ReflectHelper.java:83)
at org.hibernate.util.ReflectHelper.reflectedPropertyClass(ReflectHelper.java:71)
at org.hibernate.mapping.SimpleValue.setTypeUsingReflection(SimpleValue.java:276)
at org.hibernate.cfg.HbmBinder.createProperty(HbmBinder.java:2164)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2141)
at org.hibernate.cfg.HbmBinder.createClassProperties(HbmBinder.java:2031)
at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:359)
at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:273)
at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:144)
at org.hibernate.cfg.Configuration.add(Configuration.java:424)
at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:465)
at org.hibernate.cfg.Configuration.addResource(Configuration.java:520)
... 7 more
为了验证我的其它配置文件是否有问题,我把personMessages.hbm.xml的映射从我的hibernate.cfg.xml去除,只映射person.hbm.xml却成功创建了person表。根据在谷歌所搜到的,基本是先检查是否导包,头<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">是否弄错呀,id主键生配置等。但如果这些有问题,我之前的person表不可能创建成功吧。想来想去一定是我的personMessages.hbm.xml配置有问题。但我找了半天,还是没找到。
这让我的进度到了这就戛然而止,这让我很是郁闷,如果有人能看到这帖子,帮我一下,看出是什么问题不。谢谢指点!我把相关配置贴出如下:
1.hibernate.cfg.xml:
<!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="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.connection.driver_class">
com.mysql.jdbc.Driver
</property>
<property name="hibernate.connection.url">
jdbc:mysql://localhost:3306/college
</property>
<property name="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="myeclipse.connection.profile">mysql</property>
<mapping resource="wei/college/bean/person.hbm.xml" />
<mapping resource="wei/college/bean/personMessages.hbm.xml" />
</session-factory>
</hibernate-configuration>
2.personMessages.hbm.xml:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="wei.college.bean">
<!-- 个人用户相关信息 -->
<class name="PersonMessages">
<id name="id" type="integer">
<generator class="native"></generator>
</id>
<property name="realname"></property>
<property name="sex"></property>
<property name="birthday"></property>
<property name="age"></property>
<property name="height"></property>
<property name="weight"></property>
<property name="national"></property>
<property name="marital"></property>
<property name="address"></property>
<property name="degree"></property>
<property name="department"></property>
<property name="professional"></property>
<property name="political"></property>
<property name="certificateType"></property>
<property name="certificateNum"></property>
<property name="email"></property>
<property name="phone"></property>
<property name="interest"></property>
<property name="contents;"></property>
<property name="imageUrl"></property>
<one-to-one name="person" class="Person"></one-to-one>
</class>
</hibernate-mapping>
3.personMessages.java:
package wei.college.bean;
public class PersonMessages {
private Person person;//个人用户
private int id;//ID
private String realname;//真实姓名
private String sex;//性别
private String birthday;//生日
private int age;//年龄
private String height;//身高
private String weight;//体重
private String national;//民族
private String marital;//婚姻状况
private String address;//地址
private String degree;//学历
private String department;//系别
private String professional;//专业
private String political;//政治面貌
private String certificateType;//证件类型
private String certificateNum;//证件号码
private String email;//Email
private String phone;//手机号码
private String interest;//兴趣爱好
private String contents;//自我描述
private String imageUrl;//头像
//set和get方法省略......
}
4.CreateTabel.java:
package wei.college.bean;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class CreateTable {
public static void main(String[] args) {
Configuration conf = new Configuration().configure();
SchemaExport se = new SchemaExport(conf);
se.create(true, true);
}
}
以上所需要jar包均导入,并只要在hibernate.cfg.xml文件中删除掉
<mapping resource="wei/college/bean/personMessages.hbm.xml" />就可以成功创建person表
其中person.hbm.xml配置如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="wei.college.bean">
<!--个人用户 -->
<class name="Person" >
<id name="id" type="integer">
<generator class="native"></generator>
</id>
<property name="username"></property>
<property name="password"></property>
<property name="email"></property>
<one-to-one name="personMess" class="PersonMessages" ></one-to-one>
</class>
</hibernate-mapping>
如果有出现这样问题的请帮忙指点一下是什么原因,应该如何更改才能解决呢!
分享到:
相关推荐
当解析配置或映射文件时,DTD会验证文件是否符合规则,如果存在错误,解析器会抛出异常。 总结,Hibernate 5.2的配置和映射DTD文件是其正常工作的重要组成部分。理解这些文件的结构和内容对于正确配置和使用...
总的来说,XDoclet是Hibernate早期的一个强大辅助工具,它通过解析Java源代码中的元数据,实现了映射文件和SQL语句的自动化生成。虽然现代开发中已有替代方案,但了解XDoclet的历史和功能,对于我们理解ORM框架的...
描述:本文深入解析了Hibernate映射文件配置的核心概念,重点阐述了映射文件的基本结构及其组成部分,包括主键(id)、普通属性(property)等关键元素的配置方法和策略。 ### Hibernate映射文件配置详解 在...
**Hibernate 必备资源包详解** Hibernate 是一个强大的对象关系映射(ORM)框架,它为Java开发者提供了在关系数据库上进行数据操作的便捷方式。这个"Hibernate必备资源包"包含的是Hibernate的核心库,用于在Java...
这个名为“Hibernate映射解析 七种映射关系 后端 - Java”的压缩包文件显然包含了关于Hibernate映射关系的详细讲解。让我们深入探讨一下Hibernate的映射解析及其七种主要的映射关系。 首先,Hibernate通过XML映射...
这两个类分别处理不同的映射方式,所以默认情况下,它们不能直接共存于同一个项目中。 要让Hibernate同时支持XML和注解映射,我们可以创建一个新的配置类,该类扩展`AnnotationSessionFactoryBean`,并在需要时调用...
《Hibernate数据持久层jar包源码解析》 在软件开发中,数据持久层是系统架构中的关键部分,它负责将应用程序的数据与数据库进行交互。Hibernate作为一款强大的Java对象关系映射(ORM)框架,极大地简化了这个过程。...
8. **dom4j.jar**:XML处理库,Hibernate使用它来解析和生成XML配置文件。 9. **slf4j-api.jar**和**slf4j-log4j12.jar**:Simple Logging Facade for Java,提供了日志记录接口,通常与Log4j结合使用,方便调试和...
本篇将详细解析Hibernate的配置文件,帮助你深入理解其工作原理和配置过程。 标题"hibernate--5.Hibernate配置文件详解"暗示我们将探讨的是Hibernate 5版本的配置细节。这个版本引入了一些新特性和改进,同时也保持...
**标题解析:**“hibernate Maven仓库资源”这一标题表明了我们关注的是关于Hibernate框架在Maven项目中的使用。Hibernate是一个流行的Java持久化框架,它简化了数据库操作,使得开发者能够更方便地管理和操作数据库...
虽然`hibernate.cfg.xml`文件主要用于配置,但深入了解Hibernate源码,我们可以看到在加载配置文件后,Hibernate会解析XML,构建内部的数据结构,然后根据这些配置初始化各种组件,如连接池、方言等。 总结,`...
这将在 hibernate.cfg.xml 文件中自动生成映射资源的配置。 修改 hibernate.cfg.xml 文件 最后,您需要修改 hibernate.cfg.xml 文件。在 hibernate.cfg.xml 文件的首部,您需要添加 DOCTYPE 声明,以便 Hibernate ...
压缩包中的`hibernate_one2one_pk_1`和`hibernate_one2one_pk_2`可能分别是两个实体类的源代码文件或者包含映射文件和测试类的资源文件。这些文件详细展示了如何在实际项目中实现一对一主键映射。 7. **注意事项**...
3. **dom4j.jar**:这是一个XML处理库,Hibernate依赖它来解析和生成XML配置文件,如Hibernate的映射文件(.hbm.xml),以及读写XML格式的数据。 4. **odmg.jar**:ODMG(Object-Database Mapping Group)提供了...
**标题解析:**“hibernate映射心得 原创” 这个标题表明了本文将主要探讨作者在使用Hibernate框架进行对象关系映射(ORM)时的个人理解和经验。Hibernate是一个流行的Java ORM框架,它允许开发者用面向对象的方式...
- **hibernate3.jar**: 这是一个Java档案文件,包含预编译的Hibernate 3类和资源,可以直接在Java应用中使用,作为依赖来执行ORM(对象关系映射)任务。 - **hibernate3-src.zip**: 这是一个ZIP文件,通常包含...
总结,Hibernate配置文件JAR包包含了一系列配置和映射信息,使得开发者能便捷地在Java应用中实现与数据库的交互。理解并熟练运用这些配置和API,将有助于提升开发效率,构建稳定、高效的数据库驱动应用。
本资源包"hibernate所需jar包资源"包含了进行Hibernate开发所必需的库文件,下面将详细解释这些jar包的作用和功能。 1. **hibernate-core.jar**:这是Hibernate的核心库,包含了ORM的主要功能,如实体管理、会话...
Hibernate通过配置映射文件或注解,能够将这些复杂的关联关系转化为对象之间的连接,使得数据的存取变得更为直观和自然。 ### Hibernate中的复杂数据映射 在给定的案例中,我们探讨了如何在Hibernate中描述并操作...
- ORM(Object-Relational Mapping):Hibernate通过映射XML文件将Java对象与数据库表进行关联,实现对象与关系数据库的无缝交互。 - Session和Transaction:Session是Hibernate的主要工作接口,用于与数据库进行...