私はスプリングデータでオブジェクトが更新されないようにする方法を探しています。私はこれについていくつかの話題を見つけましたが、どれも解決策はありません。スプリングデータ:更新を防止する
私は作成して読むことができるオブジェクトを持っています。それでおしまい。私は修正/更新をサポートしたくありません。私は自分自身でデータベースIDを管理/生成します。
私はクリーンなfindBy ...インターフェイスの表記を愛しているから、私は、(私は何とか更新を防ぐために<S extends T> S save(S entity);
ロジックを変更できるかどうかJpaRepository
/CrudRepository
)org.springframework.data.repository.Repository
インタフェースを使用するのが大好きです。
私が今までに見つけた最良の解決策は、Persistable
を実装し、常にtrueを返すようにisNew(…)
を上書きすることです。しかし、読み込み専用のオブジェクトは「新」ではないので、これはちょっと気が間違いです。
これを達成するためのクリーンな方法はありますか?
あなたは、例えば、単純に更新を制限し、操作を削除するために Repository event handlerを使用することができます
'エンティティのすべての属性に更新可能な= false'のを追加します。 JPAプロバイダは変更を検出しないので、 'update'の呼び出しは無視されます。 – manish
ご存知ですか、ありがとう!しかし、それはまだ私の問題を解決しません(それはさらに悪化させるでしょう):たとえば、開発者が1年でプロパティを追加する場合、その動作は突然の可能性があります。 –
問題を少し詳しく説明できますか?エンティティ 'Foo'とその関連リポジトリ' FooRepository'を持っているとしましょう。 'FooRepository'に' CUD'(作成、更新、削除)メソッドを持たせたい(つまり、メソッドを読み込むだけです)か、メソッドをそこに入れたいのですが、呼び出されても何の効果もありませんか? 'FooRepository'の望みの定義(あなたが望むメソッド)を質問に追加することができれば便利です。 – manish