ikvenu2000
ikvenu2000

Reputation: 341

Error in hbm.xml file using hibernate 4.x version

I am developing hibernate application using maven with hibernate-core jar - 4.2.5.Final.

This is the entity:

public class Contact {  
    Long id;
    String firstName;
    String lastName;
    String email;

        //setters and getters
}

Contact.hbm.xml

    <?xml version='1.0' encoding='utf-8' ?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

    <hibernate-mapping package="org.sample.entity">
    <class name="com.sample.entity.Contact" table="CONTACT">        
        <id name="id" type="java.lang.Long">
            <column name="ID" />
            <generator class="increment" />
        </id>
      <property name="firstName"><column name="FIRSTNAME" /></property>
      <property name="lastName"><column name="LASTNAME"/></property>
      <property name="email"><column name="EMAIL"/></property>
 </class>
</hibernate-mapping>

RunContact.java

public class RunContact {

    public static void main(String[] args) {

        Session session = null;

        try{
        //sessionfactory
        Configuration configuration = new Configuration().configure();
        //SessionFactory factory = configuration.buildSessionFactory();
        ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();
        SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); 

        //session open
        session = sessionFactory.openSession();

        Contact contact = new Contact();
        contact.setFirstName("Venu Kumar");
        contact.setLastName("Indukuri");
        contact.setEmail("[email protected]");

        //save
        session.save(contact);

        }catch(Exception e){
            e.printStackTrace();
        }finally{
            //session close
            session.flush();
            session.close();
        }           
    }    
}

When i run this app, i am getting following exception.

Caused by: org.xml.sax.SAXParseException: The content of element type "class" must match "(meta*,subselect?,cache?,synchronize*,comment?,tuplizer*,(id|composite-id),discriminator?,natural-id?,(version|timestamp)?,(property|many-to-one|one-to-one|component|dynamic-component|properties|any|map|set|list|bag|idbag|array|primitive-array)*,((join*,subclass*)|joined-subclass*|union-subclass*),loader?,sql-insert?,sql-update?,sql-delete?,filter*,fetch-profile*,resultset*,(query|sql-query)*)".

Any help appreciated in figuring the problem.

Upvotes: 0

Views: 2040

Answers (1)

Ilya
Ilya

Reputation: 29693

Looks like DTD validation was failed, but your XML file is valid due to http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd (checked with Notepad++).
So, I think the problem is next:

<hibernate-mapping package="org.sample.entity">
    <class name="Contact" table="CONTACT">

class name should contains only simple class name, without package

Upvotes: 1

Related Questions