NetbeansIDE 7.2 を使用しています。データベース名が「StudentReports」の pgAdmin III PostgreSQL 9.2。
私は Hibernate について少し知っており、JDBC 接続を介してネイティブ SQL を使用して JasperReports を生成しますが、このチュートリアルが示す Hibernate Connection を介して接続する JasperReports を生成するのは初めてです。
このチュートリアル「 Hibernaterg.hibernate.InvalidMappingException: Unable to read XML Error
を使用したJasperReports - モジュール 1 "およびHibernate を使用した JasperReports - Module 2 . 2つのモジュールがあります。しかし、私はそのデータ アクセス オブジェクト (DAO) ファイルに少し変更を加えて、Department Records を作成したいと考えました。また、Hibernate Release 4.1.9 と Jasper Reports 5.0.1 および iReport-4.5.0 である Netbeans 用の Hibernate and Jasper Reports Package と iReport Plugin の別のバージョンを使用しました。そのすべてのjarファイルをプロジェクトのライブラリに追加しました。
休止状態のマッピング xml ファイルとデータ アクセス オブジェクト ファイルを扱うのはこれが初めてです。
log4j:WARN ロガー (org.jboss.logging) のアペンダーが見つかりませんでした。log4j:WARN log4j システムを適切に初期化してください。
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) 原因: org.dom4j.DocumentException: ドキュメントの 15 行目のエラー: 要素タイプ "hibernate-mapping" は、一致する終了タグ "" で終了する必要があります。ネストされた例外: 要素タイプ「hibernate-mapping」は、一致する終了タグ「」で終了する必要があります。org.dom4j.io.SAXReader.read(SAXReader.java:482) で org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:78) で ... 12 以上 Java 結果: 1 report.dao.DepartmentDAO.saveDepartment(DepartmentDAO.java:20) at com.report.test.AddDepartments.main(AddDepartments.java:20) 原因: org.dom4j.DocumentException: ドキュメントの 15 行目のエラー: 要素タイプ「hibernate-mapping」は、一致する終了タグ「」で終了する必要があります。ネストされた例外: 要素タイプ「hibernate-mapping」は、一致する終了タグ「」で終了する必要があります。org.dom4j.io.SAXReader.read(SAXReader.java:482) で org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:78) で ... 12 以上 Java 結果: 1 report.dao.DepartmentDAO.saveDepartment(DepartmentDAO.java:20) at com.report.test.AddDepartments.main(AddDepartments.java:20) 原因: org.dom4j.DocumentException: ドキュメントの 15 行目のエラー: 要素タイプ「hibernate-mapping」は、一致する終了タグ「」で終了する必要があります。ネストされた例外: 要素タイプ「hibernate-mapping」は、一致する終了タグ「」で終了する必要があります。org.dom4j.io.SAXReader.read(SAXReader.java:482) で org.hibernate.internal.util.xml.MappingReader.readMappingDocument(MappingReader.java:78) で ... 12 以上 Java 結果: 1
これらは私のコードです:
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>
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>
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);
}
}