0

2 つのデータベース (Oracle と SqlServer) があり、両方に同じテーブル (Province) があります。Hibernate で JPA を使用しており、これらのデータベースに対して操作を実行する必要があります。

テーブルごとに hbm マッピング ファイルがありますが、どちらも同じクラス (Province.java) を参照しています。各 DB のマッピングを適切に宣言するために、hibernate.Oracle.cfg.xml と hibernate.SqlServer.cfg.xml を構成しました。

私もSpringを使っています。

これが私の問題です。アプリケーションが (実際には JUnit) をロードすると、Province.java が 2 回あるため、DuplicateMappingException をスローして両方の hbm ファイルをロードしようとします。さらに、1 つの hbm ファイルと 1 つの hibernate 構成ファイルのみを保持すると、DuplicateMappingException がスローされます。しかし、休止状態の構成ファイルからマッピングを削除すると、機能します (ただし、これは必要ありません)。これは、hbm ファイルが自動的にロードされ、構成ファイルで宣言されているために再度ロードされることを意味します。

hbm ファイルが自動的に読み込まれないようにする方法はありますか?

4

1 に答える 1

0

私はついにこの問題の解決策を見つけることができました。
<exclude- unlisted -classes>false</exclude-unlisted-classes>を persistence.xml ファイルの両方の永続ユニットに追加したところ、hbm ファイルが自動的に読み込まれなくなりました。また、hibernate.Oracle.cfg.xml と hibernate.SqlServer.cfg.xml の両方にマッピングを配置する必要がありました。

于 2012-12-11T11:23:33.747 に答える