3

经过多次谷歌搜索,现在感到困惑和沮丧。

我正在将应用程序从 Hibernate 3 升级到 4。这在使用 dtd 3.0 时效果很好,但现在需要使用 4.0 xsd,这是一切都基于 apex 的地方!

该应用程序使用 hbm.xml 文件来配置每个实体,任何地方都没有注释。

找到 hbm 文件的示例将非常有用,但即使是 hibernate 4 的教程也只使用 3.0 dtd!

我正在使用以下

<hibernate-mapping
    xmlns="http://www.hibernate.org/xsd/hibernate-mapping"
    xsi:schemaLocation="http://www.hibernate.org/xsd/hibernate-mapping hibernate-mapping-4.0.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    package="org.hibernate.metamodel.binding">

使用这个我得到一个很长的错误列表,根本原因是

引起:org.xml.sax.SAXParseException;行号:6;列号:51;cvc-elt.1:找不到元素“休眠映射”的声明。

我对多个 Google 页面的阅读表明我仍然需要一个令人困惑的 doctype,我认为我只是误解了,当我添加 doctype 时,Eclipse 抱怨 hibernate-mapping 元素的定义。忽略该错误(仅以防 Eclipse 配置问题)与运行时错误相同:

必须为元素类型“hibernate-mapping”声明属性“xmlns”

我一直找不到使用 hibernate 4 xsd 的 hbm.xml 文件的教程或示例。

谁能让我摆脱痛苦?

4

2 回答 2

2

尝试这个:

<?xml version="1.0" encoding="UTF-8"?>

<hibernate-mapping package="your.package.name"
    xmlns="http://www.hibernate.org/xsd/hibernate-mapping"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.hibernate.org/xsd/hibernate-mapping
        http://www.hibernate.org/xsd/hibernate-mapping/hibernate-mapping-4.0.xsd">

    <!-- your mappings --->

</hibernate-mapping>

请注意,这指向一个外部地址 ( http://www.hibernate.org )。

理想情况下,我们将使用 Hibernate 在hibernate-core .jar 中打包的本地 XSD 文件。

我不知道 Hibernate 是否会像 Spring 一样拦截这些请求并返回本地副本。

于 2016-04-26T19:36:03.377 回答
0

关于“xmlns”属性的消息有点令人困惑,尽管您所要做的就是从hibernate-mapping元素中删除所有属性并只保留package属性。至少,它对我有用。

于 2013-07-23T05:15:44.280 回答