首页 > 解决方案 > 必须声明元素类型“hibernate-mapping”

问题描述

我的项目中有大约 75 个 .hbm.xml 文件。在 75 个文件中,有 4 个文件正在使用

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

和其他 71 个文件正在使用

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

该项目运行良好。但是昨天,当我重新启动服务器时,我发现它没有起床并抛出此异常。

org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 20;
Element type "hibernate-mapping" must be declared

我用谷歌搜索并找到了 4 个文件有问题的解决方案。我在这 4 个 .hbm.xml 文件中更改了此代码

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

到这个代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

服务器启动并运行。

我在本地,分期和生活中同时遇到了这个问题。

我无法找到,为什么会发生这种情况,因为之前它正在工作,为什么突然所有机器都停止工作?

hibernate 团队最后是否进行了任何修改?

我必须就这个问题回答我的前辈,但没有合适的答案。

I am using java7, spring-core-3.0.0, spring-2.5 and spring-hibernate2 jars.

标签: javaspringhibernatehibernate-mapping

解决方案


在映射中,我替换为:

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"classpath://org/hibernate/hibernate-mapping-3.0.dtd">

在配置中,我替换为:

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"classpath://org/hibernate/hibernate-configuration-3.0.dtd">

http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd是不错的网址,但从昨天开始就非常不稳定:'(

到https://hibernate.org的“重定向 301”似乎导致了这个问题。并且在 xml 中直接使用 https 也不起作用。

请注意,旧的 tomcat(6 或更早版本)无法识别协议“classpath://”。


推荐阅读