3

多くのグーグルの後、今は混乱してイライラしています。

アプリケーションを Hibernate 3 から 4 にアップグレードしています。これは dtd 3.0 を使用するとうまく機能しますが、4.0 xsd を使用する必要があり、これがすべてが apex のベースになります!

アプリは hbm.xml ファイルを使用して各エンティティを構成し、注釈はどこにもありません。

hbm ファイルの例を見つけることは非常に便利ですが、休止状態 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: 要素 'hibernate-mapping' の宣言が見つかりません。

複数の 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 に答える