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

时间:2013-03-20 06:37:27

标签: java hibernate orm

在Hibernate中,我在运行时遇到错误

1。 employee.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。的hibernate.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。 Employee.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找不到记录器的appender   (org.hibernate.cfg.Environment中)。 log4j:WARN请初始化   log4j系统正常。线程“main”中的异常   org.hibernate.InvalidMappingException:无法解析映射   来自资源employee.hbm.xml的文档   org.hibernate.cfg.Configuration.addResource(Configuration.java:569)     在   org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587)     在   org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555)     在   org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534)     在   org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1508)     在org.hibernate.cfg.Configuration.configure(Configuration.java:1428)     在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行出错   of document:元素类型“property”必须后跟任一个   属性规范,“&gt;”或“/&gt;”。嵌套异常:元素类型   “property”必须跟随属性规范,“&gt;”要么   “/&gt;” 中。在org.dom4j.io.SAXReader.read(SAXReader.java:482)at   org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499)     ......还有7个

4 个答案:

答案 0 :(得分:3)

name="lastName"column之间缺少空格。

答案 1 :(得分:0)

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

文档第14行出错:元素类型“属性”必须后跟任何属性规范,“&gt;”或“/&gt;”。嵌套异常:元素类型“属性”必须后跟属性规范,“&gt;”或“/&gt;”。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我有同样的错误:

  

元素类型&#34;属性&#34;必须后跟任一属性   规格,&#34;&gt;&#34;或&#34; /&gt;&#34;。嵌套异常:元素类型&#34;属性&#34;   必须遵循属性规范,&#34;&gt;&#34;或&#34; /&gt;&#34;。

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

列=&#34; ESAMBIGUA&#34;之间缺少空格。和长度=&#34; 1&#34; /&gt;

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