1

在 Hibernate 中,我在运行时收到以下错误

1.员工.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 package ="com.hibernate.basic">



    <class name="Employee" table="Employee" lazy="false">

        <id name="id" column="EMPID" type ="int">

            <generator class="increment"></generator>
        </id>

        <property name="firstName" column="NAME"></property>
        <property name="lastName"column="LNAME"></property>

    </class>

2.休眠.cfg.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">oracle.jdbc.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@172.16.3.94:1521:EAMABP</property>
        <property name="connection.username">EAM</property>
        <property name="connection.password">EAM</property>
        <property name="hibernate.connection.pool_size">10</property>
        <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <property name="current_session_context_class">thread</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <mapping resource="employee.hbm.xml" />
    </session-factory>

</hibernate-configuration>

3. 员工.java

package com.hibernate.basic;

public class Employee {

    private int id;
    private String FName, LName;

    public String getFName() {

        return FName;
    }

    public void setFName(String FName) {

        this.FName = FName;
    }

    public String getLName() {
        return LName;
    }

    public void setLName(String LName) {

        this.LName = LName;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

4.StoreData.java

package com.hibernate.basic;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

public class StoreData {
    public static void main(String[] args) {

        // creating configuration object
        Configuration cfg = new Configuration();
        cfg.configure("hibernate.cfg.xml");// populates the data of the
                                            // configuration file

        // creating seession factory object
        SessionFactory factory = cfg.buildSessionFactory();

        // creating session object
        Session session = factory.openSession();

        // creating transaction object
        Transaction t = session.beginTransaction();

        Employee e1 = new Employee();
        e1.setId(115);
        e1.setFName("sonoo");
        e1.setLName("jaiswal");

        session.persist(e1);// persisting the object

        t.commit();// transaction is commited
        session.close();

        System.out.println("successfully saved");

    }
}

执行后出现错误:

log4j:WARN 找不到记录器(org.hibernate.cfg.Environment)的附加程序。log4j:WARN 请正确初始化 log4j 系统。线程“主”org.hibernate.InvalidMappingException 中的异常:无法从 org.hibernate.cfg.Configuration.addResource(Configuration.java:569) 的 org.hibernate.cfg.Configuration 中的资源employee.hbm.xml 解析映射文档。 org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555) 的 parseMappingElement(Configuration.java:1587) org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534) 的 org.hibernate.cfg.Configuration .doConfigure(Configuration.java:1508) at org.hibernate.cfg.Configuration.configure(Configuration.java:1428) at com.hibernate.basic.StoreData.main(StoreData.java:13) 原因:org.hibernate。InvalidMappingException: 无法从 org.hibernate.cfg.Configuration.addInputStream(Configuration.java:508) 的输入流中解析映射文档 org.hibernate.cfg.Configuration.addResource(Configuration.java:566) ... 6 更多作者:org.dom4j.DocumentException:文档第 14 行出错:元素类型“property”必须后跟属性规范“>”或“/>”。嵌套异常:元素类型“property”必须后跟属性规范“>”或“/>”。在 org.dom4j.io.SAXReader.read(SAXReader.java:482) 在 org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499) ... 还有 7 个 addInputStream(Configuration.java:508) at org.hibernate.cfg.Configuration.addResource(Configuration.java:566) ... 6 更多原因:org.dom4j.DocumentException:文档第 14 行出错:元素类型“属性” " 必须后跟属性规范,">" 或 "/>"。嵌套异常:元素类型“property”必须后跟属性规范“>”或“/>”。在 org.dom4j.io.SAXReader.read(SAXReader.java:482) 在 org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499) ... 还有 7 个 addInputStream(Configuration.java:508) at org.hibernate.cfg.Configuration.addResource(Configuration.java:566) ... 6 更多原因:org.dom4j.DocumentException:文档第 14 行出错:元素类型“属性” " 必须后跟属性规范,">" 或 "/>"。嵌套异常:元素类型“property”必须后跟属性规范“>”或“/>”。在 org.dom4j.io.SAXReader.read(SAXReader.java:482) 在 org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499) ... 还有 7 个 必须后跟属性规范“>”或“/>”。嵌套异常:元素类型“property”必须后跟属性规范“>”或“/>”。在 org.dom4j.io.SAXReader.read(SAXReader.java:482) 在 org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499) ... 还有 7 个 必须后跟属性规范“>”或“/>”。嵌套异常:元素类型“property”必须后跟属性规范“>”或“/>”。在 org.dom4j.io.SAXReader.read(SAXReader.java:482) 在 org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499) ... 还有 7 个

4

4 回答 4

3

name="lastName"和之间缺少一个空格column

于 2013-03-20T07:16:49.170 回答
0

该错误清楚地说明了行号和错误。看看这可能会有所帮助。

文档第 14 行出错:元素类型“property”必须后跟属性规范“>”或“/>”。嵌套异常:元素类型“property”必须后跟属性规范“>”或“/>”。

于 2013-03-20T07:14:20.150 回答
0

这个错误通常是因为你的标签没有关闭。你在这里发布的内容中,我猜你没有关闭employee.hbm中的hibernate-mapping标签。试试吧!希望这可以帮助!

于 2013-03-21T08:39:49.997 回答
0

我有同样的错误:

元素类型“property”必须后跟属性规范“>”或“/>”。嵌套异常:元素类型“property”必须后跟属性规范“>”或“/>”。

我修复了它在 *.hbm.xml 文件中更改了一行

column="ESAMBIGUA" 和 length="1"/> 之间缺少空格

第一条评论,来自Eduard Wirch的评论真的帮助了我。谢谢!

于 2016-07-07T19:27:08.443 回答