9

同じスキーマ/テーブル構造を持つ必要がある顧客ごとに別々のデータベースに多くの顧客データがあります。ただし、一部のデータベースには、他のデータベースと比較して余分な列を持つテーブルがあります。

たとえば、顧客 A には、列 a、b、c、d を持つテーブル X があります。顧客 B には、列 a、c、d を持つテーブル X があります。b が存在する場合はキャプチャする必要がありますが、存在しない場合は無視できます。

それらが存在しない場合、それらの列を無視するように JPA に指示する方法はありますか? @Basic(optional=true)私が望むものとまったく同じように読めますが、ドキュメントはそれが別の目的であることを示しています。

現在、予想どおり、「フィールドリスト」に不明な列「table.field」が表示されます

PS残念ながら、列を持たないデータベースに列を追加することはできません。

4

1 に答える 1

14

@Basic(optional=true)フィールドが存在するかどうかではなく、フィールドが null 値を保持できることをスキーマ ジェネレーター (存在する場合) に伝えるだけです。

私の頭に浮かんだ問題の可能な解決策は、クラス階層を使用し、@MappedSuperclass代わりに共通の親クラスを@Entity定義してから、そのクラスから拡張された各データベースの各具象クラスを定義することです。

JPA 実装では、これらのフィールドに一致するテーブルが検索されないため、モデルを定義するためだけに空のエンティティ クラス(スーパー クラスを拡張する) が存在@MappedSuperclassすることさえあります。

于 2013-09-30T16:10:29.190 に答える