dateプロパティを持つマップされたクラスがあります。このクラスのsaveOrUpdateオブジェクトを保存して、保存されているオブジェクトよりも古い場合にのみ、既存のオブジェクトが更新されるようにします。
どうすればよいですか(可能であれば、きちんと効率的に)?
私はこのようなクラスをたくさん持っているので、それらすべてに大量のカスタムHQLを書くことは避けたいと思います。
SpringのHibernateTemplate.saveOrUpdateを見てみてください。それはrequired.biengオープンソースと同じ機能を持っていますあなたは実装のためのコードも見るかもしれません
これがJavaでどのように達成されるかはわかりませんが、同様のことができると確信しています。
参考までに、以下のクラスはNHibernate固有です
クラスを拡張しDefaultSaveOrUpdateEventListener
てメソッドをオーバーライドPerformSaveOrUpdate
できます。このメソッドでは、Dateプロパティを含むクラスを識別し(このすべてのクラスが実装する必要のある抽象クラス/インターフェイスを持っている)、次の値を設定するのに役立つカスタムコードを記述できます。このプロパティを実行してから、baseSaveOrUpdate
メソッドを呼び出します。
次に、ビルド中Configuration
にこのリスナーを追加します。これを行う方法については、Hibernateのドキュメントを参照してください。
これがお役に立てば幸いです。