Tell me more ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I am using NetbeansIDE 7.2. and pgAdmin III PostgreSQL 9.2 with Database name "StudentReports". I know a little of Hibernate and generating JasperReports using native SQL through JDBC Connection. But I am new to generating JasperReports connecting thru Hibernate Connection which this tutorial shows.

I am getting org.hibernate.InvalidMappingException: Unable to read XML Error and NEVER made a successful Hibernate Connection test, an error pops up saying "Could not parse mapping document from resource com/report/mappings/Department.hbm.xml", after following this tutorial "JasperReports with Hibernate - Module 1" and JasperReports with Hibernate - Module 2. It has 2 Modules. But I did a little modifications on its data access object (DAO) files and I just wanted to have a Department Records. Also, I used a different version of Hibernate and Jasper Reports Package and iReport Plugin for Netbeans which are Hibernate Release 4.1.9 and Jasper Reports 5.0.1 and iReport-4.5.0. I have added all of the jar files of it to my project's Library.

This is my first time handling hibernate mapping xml files and data access object files. These may sound easy for others but I really tried my part too on solving these on my own but seems I don't get it. So, Please help me figuring out these problems. I will really appreciate any help.

Thanks!

log4j:WARN No appenders could be found for logger (org.jboss.logging). log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.InvalidMappingException: Unable to read XML at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:109) at org.hibernate.cfg.Configuration.add(Configuration.java:478) at org.hibernate.cfg.Configuration.add(Configuration.java:474) at org.hibernate.cfg.Configuration.add(Configuration.java:647) at org.hibernate.cfg.Configuration.addResource(Configuration.java:730) at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2115) at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2087) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2067) at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2020) at org.hibernate.cfg.Configuration.configure(Configuration.java:1935) at org.hibernate.cfg.Configuration.configure(Configuration.java:1914) at com.report.dao.DepartmentDAO.saveDepartment(DepartmentDAO.java:20) at com.report.test.AddDepartments.main(AddDepartments.java:20) Caused by: org.dom4j.DocumentException: Error on line 15 of document : The element type "hibernate-mapping" must be terminated by the matching end-tag "". Nested exception: The element type "hibernate-mapping" must be terminated by the matching end-tag "". at org.dom4j.io.SAXReader.read(SAXReader.java:482) at org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:78) ... 12 more Java Result: 1

These are my codes:

Department.java

package com.report.beans;
  public class Department  implements java.io.Serializable {

 private int id;
 private String name;

public long getId() {
    return this.id;
}

public void setId(int id) {
    this.id = id;
}
public String getName() {
    return this.name;
}

public void setName(String name) {
    this.name = name;
}
}

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="hibernate.connection.driver_class">org.postgresql.Driver</property>
  <property name="hibernate.connection.url"> jdbc:postgresql://localhost:5432/StudentReports</property>
  <property name="hibernate.connection.username">postgres</property>
  <property name="hibernate.connection.password">postgres</property>
  <property name="hibernate.connection.pool_size">1</property>
  <property name="hibernate.show_sql">true</property>
  <property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
   <property name="hibernate.hbm2ddl.auto">update</property>    

 <mapping resource="com/report/mappings/Department.hbm.xml"/>
  </session-factory>
 </hibernate-configuration>

Department.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>
<class name="com.report.beans.Department"  lazy="false" table="Department" schema="dbo"      catalog="StudentReports">
        <id name="id" type="long">
        <column name="ID" />
        <generator class="increment" />
    </id>
    <property name="name" type="string">
        <column name="name" length="100" not-null="true" unique="true" />
    </property>  
    </class>  
    </hibernate-mapping>

DepartmentDAO.java

package com.report.dao;

import com.report.beans.Department;
import org.hibernate.Session;

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

public class DepartmentDAO{


public String saveDepartment(Department department)
{

    SessionFactory sessionF = new Configuration().configure().buildSessionFactory();
    Session session = sessionF.openSession();

//  This is the code I modified. I didn'y use HibernateSessionFactory
//  Session session = HibernateSessionFactory.getSession();
    String Result = "";

    try
    {
        session.beginTransaction();
        session.save(department);
        session.getTransaction().commit();
        session.close();
        Result = "Department Saved Successfully";
    }
    catch(Exception e)
    {
        e.printStackTrace();
        session.close();
        Result = "Department was not saved due to the above Exception";
    }

    return Result;
}
}

AddDepartments.java

package com.report.test;

import com.report.beans.Department;
import com.report.dao.DepartmentDAO;

public class AddDepartments
{
public static void main(String args[])
{
    Department electronics = new Department();
        electronics.setName("Electronics Engineering");

    Department computerScience = new Department();
        computerScience.setName("Computer science Engineering");

    Department civil = new Department();
        civil.setName("Civil Engineering");


    String Result1 = new DepartmentDAO().saveDepartment(electronics);
        System.out.println(Result1);

    String Result2 = new DepartmentDAO().saveDepartment(computerScience);
        System.out.println(Result2);

    String Result3 = new DepartmentDAO().saveDepartment(civil);
        System.out.println(Result3);
}
}
share|improve this question

1 Answer

up vote 0 down vote accepted

The error shows

The element type "hibernate-mapping" must be terminated by the matching end-tag

Therefore add a matching closing tag for this element in Department.hbm.xml as expected by the XML parser

</hibernate-mapping>

Similarly add a closing hibernate-configuration element in hibernate.cfg.xml

</hibernate-configuration>
share|improve this answer
I see. It had actually solved the error. Thank you so much. I I am now connected to my Hibernate Connection. – baikoko09 2 days ago

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.