0

Hibernate Tools Eclipse Add-On で Hibernate Code Generation 機能を使用しようとしています。次のエラーが表示されます。

org.hibernate.InvalidMappingException: リソース Alert.hbm.xml からのマッピング ドキュメントを解析できませんでした リソース Alert.hbm.xml からのマッピング ドキュメントを解析できませんでしたプロパティの検索中に: alertId org.hibernate.MappingException: クラス アラートが見つかりません プロパティの検索中に: alertId クラス プロパティの検索中にアラートが見つかりません: alertId java.lang.ClassNotFoundException: アラート アラート

クラス Alert.java が見つかりませんが、コード ジェネレーター (名前の由来は...) がすべての休止状態クラスを生成するはずだと思っていました。

Hibernate Tools 3.4.x で Eclipse Indigo を使用する。

ここに私の hibernate.cfg.xml があります:

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

<休止状態の構成>
    <セッションファクトリー>
        <!-- データベース接続設定 -->
        <プロパティ名="connection.driver_class">
            com.mysql.jdbc.ドライバー
        </プロパティ>
        <プロパティ名="connection.url">
            jdbc:mysql://localhost:3306/findata?tcpKeepAlive=true
        </プロパティ>
        <property name="connection.username">ルート</property>
        <property name="connection.password">madmax1.</property>

        <property name="connection.pool_size">2</property>
        <property name="show_sql">true</property>
        <プロパティ名="方言">
            org.hibernate.dialect.mysqldialect
        </プロパティ>
        <property name="current_session_context_class">スレッド</property>
        <プロパティ名="cache.provider_class">
            org.hibernate.cache.NoCacheProvider
        </プロパティ>

        <mapping resource="Alert.hbm.xml" />
        <mapping resource="Entity.hbm.xml" />
        <mapping resource="FactData.hbm.xml" />
        <mapping resource="TimeEvent.hbm.xml" />
        <mapping resource="User.hbm.xml" />
        <mapping resource="AlertTarget.hbm.xml" />
        <mapping resource="LogAlert.hbm.xml" />
    </セッションファクトリー>
</休止状態の構成>

Alert.hbm.xml は次のとおりです。

<?xml バージョン="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<休止状態のマッピング>
    <class name="Alert" table="alerts">
        <id name="alertId" column="id">
            <generator class="assigned"/>
        </id>
        <property name="limitValue" column="limit_value" type="decimal" />
        <!-- unique=true プロパティにより、多対 1 が 1 対 1 の関係になります -->
        <多対一の名前="alertEntity"
            class="Entity" column="entity_id"
            not-null="true" カスケード="all" unique="true"/>
        <set name="alert_targets" table="alerts_alert_targets" cascade="all">
            <key column="alert_id" />
            <多対多列="alert_target_id"
                class="AlertTarget" />   
        </セット>
   </クラス>
</hibernate-mapping>
4

2 に答える 2

1

奇妙なことに、生成されるクラスを探しています。

hibernate-reverse.xml ファイルを調べて、これを引き起こす可能性のある追加の属性がないかどうかを確認します。

または、生成中に、既存のものを使用するのではなく、hibernate-revenge.xml と hibernate.cfg.xml をセットアップしてみてください。

于 2012-05-11T08:08:59.553 に答える
1

原因は、Alert.hbm.xml の「id」プロパティに「type」が指定されていなかったことが原因であることが判明しました。

于 2012-05-25T15:34:10.250 に答える