当前位置: 首页 > 知识库问答 >
问题:

正在获取org.hibernate.InvalidMappingException:无法读取XML

叶明辉
2023-03-14

我正在获取Org.Hibernate.invalidMappingException:无法读取XML错误并且从未进行成功的Hibernate连接测试,在学习了本教程“JasperReports with hibernate-module1”和JasperReports with hibernate-module2之后,弹出一个错误,说“Could not parse mapping document from resource com/report/mappings/department.hbm.XML”。它有两个模块。但是我对它的数据访问对象(DAO)文件做了一点修改,我只想有一个部门记录。此外,我使用了不同版本的Hibernate和Jasper Reports包以及用于Netbeans的iReport插件,它们是Hibernate 4.1.9版、Jasper Reports 5.0.1版和iReport-4.5.0版。我已经将它的所有jar文件添加到我的项目库中。

这是我第一次处理hibernate映射xml文件和数据访问对象文件。

log4j:warn找不到logger(org.jboss.logging)的附件。log4j:警告请正确初始化log4j系统。
线程“main”org.hibernate.invalidmappingException:无法在org.hibernate.internal.util.XML.mappingreader.readmappingdocument(mappingreader.109)在org.hibernate.cfg.configuration.add(configuration.java:478)在org.hibernate.cfg.configuration.add(configuration.java:474)在org.hibernate.cfg.configuration.add(configuration.java:474)ao.Java:20)在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

这些是我的代码:

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

共有1个答案

逑翰翮
2023-03-14

错误显示

元素类型“hibernate-mapping”必须由匹配的end-tag终止

因此,按照XML解析器的要求,在department.hbm.XML中为该元素添加匹配的结束标记

</hibernate-mapping>
</hibernate-configuration>
 类似资料:
  • 我们使用nextjs/reactjs作为FE,并且我们有一个server.js文件,它允许我们在上传映像,但是由于某种原因,每当我们运行服务器时,都会出现错误 下面是我们在server.js上的代码 这些是我们package.json中包含的脚本 希望得到一些答案和建议。这些代码在本地运行,没有任何问题

  • 我目前使用两个组件,并在这两个组件上实现了react Route。但是当我单击父组件viewall.js时,我无法从我的模拟json服务器api中获取值,这个错误显示: viewall.js

  • 我正在尝试使用这个基本布局的程序,可以读取Excel文件。我想扩展到此代码之外的内容,但由于某些原因,每次构建代码时,我都会遇到一个错误“注意:C:\Users\Ryan Kabir\Documents\NetBeansProjects\ExcelReader\src\ExcelReader\ExcelReader.java使用或覆盖不推荐使用的API。注意:使用-Xlint重新编译:不推荐使用以

  • 我是一个初学者,学习反应和还原。我写了这个关于如何在Redux中使用Connect.js的演示。搜索这类问题,但我的代码没有正确的答案。我得到了一个未定义的上下文。是错字吗?还是我以错误的方式传递了上下文?提前谢了。这是我的代码。 index.js /store/index.js Constants.js

  • 问题内容: 我是一个新用户,正在尝试此命令。 我得到这个错误 我知道这似乎是一个琐碎的问题,但我坚持下去。 问题答案: 如果编译和安装的代码是 不是 在分支(签出由默认值),但只有在该回购的分支,尝试: 然后重试编译。

  • 为什么在上面的程序中我得到InvalidClassException? 线程“main”java.io.InvalidClassException中的异常:SerializationExamples.ac;java.base/java.io.ObjectStreamClass$ExceptionInfo.NewInvalidClassException(ObjectStreamClass.java