Gaurav S Gupta
Gaurav S Gupta

Reputation: 11

In Hibernate,I am getting following error at runtime

In Hibernate,I am getting following error at runtime

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");

    }
}

Error occurred after execution:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment). log4j:WARN Please initialize the log4j system properly. Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource employee.hbm.xml at org.hibernate.cfg.Configuration.addResource(Configuration.java:569) at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1587) at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1555) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1534) at 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) Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from input stream at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:508) at org.hibernate.cfg.Configuration.addResource(Configuration.java:566) ... 6 more Caused by: org.dom4j.DocumentException: Error on line 14 of document : Element type "property" must be followed by either attribute specifications, ">" or "/>". Nested exception: Element type "property" must be followed by either attribute specifications, ">" or "/>". at org.dom4j.io.SAXReader.read(SAXReader.java:482) at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:499) ... 7 more

Upvotes: 1

Views: 2892

Answers (4)

Maxi
Maxi

Reputation: 173

I had the same error:

Element type "property" must be followed by either attribute specifications, ">" or "/>". Nested exception: Element type "property" must be followed by either attribute specifications, ">" or "/>".

And i fixed it changing a line in a *.hbm.xml file

There was a space missing between column="ESAMBIGUA" and length="1"/>

The first comment, the one from Eduard Wirch really helped me. Thanks!

Upvotes: 0

Tazo
Tazo

Reputation: 197

This error usually occurs because your tags are not closed.Of what you have posted here,I guess you have not closed the hibernate-mapping tag in employee.hbm.Try doing that! Hope this helps!

Upvotes: 0

Eduard Wirch
Eduard Wirch

Reputation: 9922

There is a space missing between name="lastName" and column.

Upvotes: 3

Tazo
Tazo

Reputation: 197

The error clearly states the line number and the error.Having a look at this could help.

Error on line 14 of document : Element type "property" must be followed by either attribute specifications, ">" or "/>". Nested exception: Element type "property" must be followed by either attribute specifications, ">" or "/>".

Upvotes: 0

Related Questions