用eclipse配置hibernate的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">
<!-- Generated Jan 9, 2017 12:44:07 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.domain.Tblworkexperience" table="tbl_workexperience">
        <id name="idworkexperience" type="int" column="id_tbl_workexperience">
            <column name="id_tbl_workexperience"/>
            <generator class="assigned" />
        </id>
        <property name="id_enableman" type="int" column="id_tbl_enableman">
            <column name="id_tbl_enableman" />
        </property>
        <property name="companyName" type="java.lang.String" column="col_tbl_workexperience_comname">
            <column name="col_tbl_workexperience_comname" />
        </property>
        <property name="date" type="java.lang.String" column="col_tbl_workexperience_date">
            <column name="col_tbl_workexperience_date" />
        </property>
        <property name="content" type="java.lang.String" column="col_tbl_workexperience_content">
            <column name="col_tbl_workexperience_content" />
        </property>
    </class>
</hibernate-mapping>


之前我在网上找到了一个模板,并参照着模板进行了配置,但是在用测试用例进行测试时发现了异常。具体异常如下图所示:

Jan 11, 2017 1:12:43 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000046: Connection properties: {user=root, password=****}
Jan 11, 2017 1:12:43 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl buildCreator
INFO: HHH000006: Autocommit mode: false
Jan 11, 2017 1:12:43 PM org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Wed Jan 11 13:12:44 CST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Jan 11, 2017 1:12:44 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/domain/Tblworkexperience.hbm.xml
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3819)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXmlQueue(Configuration.java:3808)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3796)
	at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1412)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1846)
	at com.dao.UserDao.main(UserDao.java:16)
Caused by: org.hibernate.MappingException: column attribute may not be used together with <column> subelement
	at org.hibernate.cfg.HbmBinder.bindColumns(HbmBinder.java:1125)
	at org.hibernate.cfg.HbmBinder.bindColumnsOrFormula(HbmBinder.java:1647)
	at org.hibernate.cfg.HbmBinder.bindSimpleValue(HbmBinder.java:1201)
	at org.hibernate.cfg.HbmBinder.bindSimpleId(HbmBinder.java:444)
	at org.hibernate.cfg.HbmBinder.bindRootPersistentClassCommonValues(HbmBinder.java:387)
	at org.hibernate.cfg.HbmBinder.bindRootClass(HbmBinder.java:327)
	at org.hibernate.cfg.HbmBinder.bindRoot(HbmBinder.java:178)
	at org.hibernate.cfg.Configuration$MetadataSourceQueue.processHbmXml(Configuration.java:3816)
	... 5 more

该异常的意思是不能解析com/domain/包下的Tblworkexperience.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">
<!-- Generated Jan 9, 2017 12:44:07 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.domain.Tblworkexperience" table="tbl_workexperience">
        <id name="idworkexperience" type="int" >
            <column name="id_tbl_workexperience"/>
            <generator class="assigned" />
        </id>
        <property name="id_enableman" type="int" >
            <column name="id_tbl_enableman" />
        </property>
        <property name="companyName" type="java.lang.String" >
            <column name="col_tbl_workexperience_comname" />
        </property>
        <property name="date" type="java.lang.String" >
            <column name="col_tbl_workexperience_date" />
        </property>
        <property name="content" type="java.lang.String" >
            <column name="col_tbl_workexperience_content" />
        </property>
    </class>
</hibernate-mapping>


两次修改的最大区别就是在对应的字段的属性中是否有column,正确的是要把

 <property name="content" type="java.lang.String" column="col_tbl_workexperience_content">
            <column name="col_tbl_workexperience_content" />
 </property>


中的column的属性去掉。

如果你没有hbm.xml的格式的话可以使用eclipse的帮助格式快速创建。具体的步骤如下:

点击需要创建的位置右击——》移动光标到new——》点击other——》在弹出的项目框的wizards文本框中输入“hi”——》

在弹出的搜索结果中选择你要配置的文件格式——》跟着向导便可以得到配置格式文件了。

在得到配置文件后,根据你数据库中的表来具体配置。

Tips:1.不要轻易复制网上的hbm.xml文件,因为在复制粘贴的时候会产生一些隐性或显性的空格,导致你的配置文件会报错,错误提示如下:

The processing instruction target matching "[xX][mM][lL]" is not allowed.

          2.务必按照我上面的配置格式进行配置,否则会出现错误提示:

Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource com/domain/Tbluser.hbm.xml






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值