1

SDN を使用したデータベース Neo4j で grails 2.4.3 を使用しています。Grails プラグインを使用していないため、grails は Neo4j をサポートしていません。ドメイン パッケージでドメイン クラスを作成すると、エラーが発生します。そのため、サービス パッケージでドメインを作成します。私の最初の質問は:

私たちは正しいですか、それとも別のことをしなければなりませんか?

私の別の質問は、この概念の検証を提供することです。コマンド オブジェクトを使用します。そのため、一意のカスタム検証が必要です。そのために Validator を使用できることはわかっていますが、ロジックはサービスにのみ残す必要があります。では、このようなものを作成できますか?

static constraints = {
        username size: 5..15
        password size: 5..15, blank: false
        userEmail email: true
        }
username email:true 
userName name:unique
4

1 に答える 1

0

なぜあなたがこのためにサービスを使わなければならないことに固執しているのか、私には理解できません。アノテーションが付けられたサービスを作成し、@Validateableそれを GORM 以外のドメイン クラスとして使用するのは非常に奇妙に思えます。それが機能する場合はクールですが、逆に運転するようなものです。(トランスミッションが燃え尽きるまで)そこにたどり着きますが、バックミラーを見て、すべてが逆になっているのを見るのはストレスの多いドライブになるでしょう。

クラスを src/groovy の下の賢明なパッケージに入れて、それらに注釈を付けてみませんか? に登録するだけですConfig.groovy

grails.validateable.classes = [
     com.mycompany.myapp.User, com.mycompany.dto.Account]

unique一意性チェックは実行できますが、標準の制約では実行できません。これは GORM に関連しています。ドメイン クラスのテーブルまたはバッキング ストアを調べて、データストア固有の一意性クエリを実行しますが、ここでは当てはまりません。しかし、同じことを自分で簡単に行うことができます。カスタム バリデータを使用します。

email validator: { value, obj ->
   // run a Neo4j query checking to see if value has
   // been used, the equivalent of
   // "select count(email) from person where email=?"
   // and return false if the count is not zero
}
于 2014-11-03T10:55:57.020 に答える