6

私たちのプロジェクトは、Hibernate のプログラムを使用Configurationして、SessionFactory などをセットアップします。Hibernate のバージョン 3 からバージョン 4 に移行しました。「要素タイプ "hibernate-mapping" を宣言する必要があります」というエラーが表示されます。それはSaxParseExceptionです。それは素晴らしいことですが、WEB-INF/lib ディレクトリを確認すると、Hibernate のバージョン 4 コア .jar ファイルがそこにあるので、クラスパス上にあります。

最初は、Hibernate チームが

<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

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

しかし、それはエラーを修正しません。何が起こっている?Hibernate の XML 構成ファイルを使用している別のプロジェクトで、同じ移行を行ったところ、うまくいきました。私の環境ではクラスパスを使用する必要があることに注意してください.DTDはインターネットなどからダウンロードできません。とにかくそうであってはなりません。

編集:要求された例外は次のとおりです。

Caused by: org.xml.sax.SAXParseException; systemId: ; lineNumber: 6; columnNumber: 20; Element type "hibernate-mapping" must be declared.
        at org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1213)
        at org.apache.xerces.validators.common.XMLValidator.reportRecoverableXMLError(XMLValidator.java:1807)
        at org.apache.xerces.validators.common.XMLValidator.validateElementAndAttributes(XMLValidator.java:3633)
        at org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLValidator.java:1229)
        at org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispatch(XMLDocumentScanner.java:938)
        at org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentScanner.java:381)
        at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
4

2 に答える 2

1

また、 hibernate 3 から 4 に移行します。

hibernate.cfg.xml ファイルの場合、次の DTD を使用します

<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

マッピング ファイルには、次の DTD を使用します。

<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

dtd を変更すると、休止状態 4 が dtd の代わりに xsd を使用するため、例外が発生します。 dtd から xsd への移行の Hibrenate Jira

したがって、dtd の代わりに xsd ファイルを使用する必要があります。

Hibernate hbm の例

于 2013-06-19T10:25:44.397 に答える