1

Salat / Casbah / Mongoスタックを使用して永続化されるScalaケースクラスがあると仮定して、ActiveRecordフックを使用するRailsまたはJSR303Bean検証を使用するJavaで簡単に実行できるような事前永続化検証ロジックを設定します。

機能的なパラダイムでこれについて考えるより良い方法があるかもしれませんが、私は次のようなことを達成したいと思います。

case class SomeItem(
  id: ObjectId = new ObjectId,
  someProperty: String) {

  @PrePersistence
  def validate() = {
     //perform some logic
     //fail document save in certain conditions
  }
}

Salatでこのようなことを行う方法に関するドキュメントを見つけるのに苦労しています。@Persistアノテーションは表示されますが、フックの作成ではなく、特定の値のシリアル化に重点が置かれているようです。

1つのオプションは、私のケースクラスのSalatDAOのsaveメソッドをオーバーライドすることのようです。誰かがこれの例を持っているか、または永続化前のイベントに関連付けられた検証を処理するためのより良い組み込みの方法を知っていますか?

ありがとう!

4

1 に答える 1

2

ここでサラッ開発者。

はい、@Persistコンストラクターにないフィールドがシリアル化されていることを確認するためだけです。これは、MongoDBでデータを操作する場合に特に便利です。1つの例は、すべてのフィールドに値が入力されていることを確認して、適切に並べ替えることができるようにしたいが、値がOption存在しない可能性がある場合です。

残念ながら、JavaドライバーはRubyドライバーのようなライフサイクルコールバックを提供していません:(

しかし、あなたが望むことは、実行するのに十分簡単でなければなりません。https://github.com/novus/salat/issuesで問題を提出し、検証の動作をどのようにしたいかを説明してください。ディスカッションを開始できます。1.9.2リリースで何かを取り入れることができます。 。

于 2012-10-15T13:25:02.693 に答える