0

同じテーブル T を持つ 2 つの異なるデータベース D1、D2 があります。

T には、D1 で自動生成された主キー列 ID があり、D2 では単純な整数です。D1 の T から D2 の T にレコードをシフトする必要があるため、JPA で T を @Entity としてマッピングしました。問題は、@ID が D1 では @GeneratedValue(strategy = GenerationType.IDENTITY) であるが、D2 ではそうではないことです。

エンティティを複製しないための解決策はありますか? @MappedSuperclass を使用するには @Id 列が必要であることに気付きましたが、私の場合は特殊化しようとしているものです。私が見つけた唯一の解決策は、@id を除いて同一の同じテーブルを参照する 2 つの異なるクラスを生成することです...何か良いことはありますか?

(一般的な抽象クラスを使用すると、@NamedQueries を定義するときに問題が発生します。継承されたフィールドを参照できないようです (SELECT m FROM Specialized m WHERE m.aBaseField= :aBaseField) 例外を返します:「状態フィールド パス ' m.aBaseField' を有効な型に解決できません。"

4

2 に答える 2

0

私は本当の解決策を見つけられませんでした。私がやったのは、別の @Entity(name="name1") を提供するクラスを複製し、そのうちの 1 つに対して @GenerationType アノテーションを削除することでした。永続化ユニットでは、私がやろうとしていることに応じて、どちらか一方を使用します。

于 2013-08-08T19:33:46.677 に答える