web-dev-qa-db-ja.com

JPAを使用するときに主キーなしでデータベースビューをマップする方法

  • SQLデータベースに明確な主キー(合成またはその他)のないビューがあります
  • JPAでアクセスしたい

(@Tableアノテーションなどを使用して)テーブルを処理するのと同じようにJPAでビューを処理できるはずであることを読みました。ただし、主キーがない場合は、すべての列から複合キーを効果的に作成する必要があります(実際、これはHibernateのリバースエンジニアリングツールがデフォルトで実行しているように見えます)。

ただし、これを行うと、望ましくない副作用が発生します。例えば。

  • ビューではなく、主キーの属性を指すすべてのコードを記述する必要があります。

    myViewObject.getPrimaryKey()。getFirstName()

  • Springリポジトリで「findBy ...」メソッドを使用できない(その属性はビューの「識別子」の一部であり、実際にはその属性の1つではないため)。

私の質問は、JPAを使用して属性に簡単にアクセスできるので、どのようにビューをマップするのですか?

注:完全に間違ったアプローチを使用していると言われてとてもうれしいです。これは、より良い解決策が必ずあるような一般的な問題のようです。

10
Andy N

ビューのすべての行にUUID列を追加できるので、 ID列を@Idとして使用

11
Vlad Mihalcea