2017-02-01 15 views
0

データベースビューをJPA エンティティにマップしようとしています。 EntitiesにIDが必要なので、私はStackOverflowで解決策を探して、最良の方法はIDとしてすべての列を設定することであることがわかりました。JPA:ダミーIDを持つビューとしてエンティティをマッピング

いずれかの列にnull値がない限り、すべて正常に動作しているようです。それが発生すると、JPAはnullオブジェクトを返します。

誰も同じ問題を抱えていますか?実際にビューに存在しないダミーID列を指定する方法はありますか?

答えて

1

これを実行する最善の方法は、ビュー自体の内部にIDロジックを配置することです。

解決策の1つとして、ROW_NUMBERまたはROWIDのようなデータベース機能を使用する方法があります。他にももちろんありますが、ビューのクエリの一部としてこれを行うのが最も理にかなっています。

ただし、データが読み取り専用のビューから取得されているため、このエンティティに@Immutableというマークを付けることをお勧めします。これは単に、にそのようなエンティティを変更しようとするコードでの問題または間違いの発生を防ぎ、それは許可されません。

+0

私はこの解決策も考えていましたが、ビューを修正する必要のない最高の "プログラマチック"なソリューションを見つけたいと思っています; –

+0

'@ IdClass'または' @ IdClass'を使う以外に、 nullではなく一意でないことが保証されている列のコンポジットを表すために、「EmbeddedId」を使用しています。他のオプションは認識していません。 – Naros

関連する問題