0

環境:

  • グレイルズ 3.2.9
  • MongoDB 3.4.2 用の GORM 6.1.2

これは私の(簡略化された)ドメインクラスです

class Cluster {

    String name
    String slug

    static constraints = {
        name        blank: false, unique: true
        slug        blank: false, unique: true, validator: { return it == it.toLowerCase().replaceAll(/[^\w-]/, '') }
    }

    static mapping = {
        collection 'Cluster'
        id name: 'slug'
    }

}

ご覧のとおり、slugプロパティをドキュメントにマッピングしました_id

ドキュメントを正常に追加できます

Cluster cluster = new Cluster(name: 'Dallas', slug: 'dal05')
cluster.insert(failOnError: true)

すべてが正常に動作します。しかし、同じinsertコマンドをもう一度実行すると、重複したキーの例外が発生します。

com.mongodb.MongoBulkWriteException: Bulk write operation error on server localhost:27017. Write errors: [BulkWriteError{index=0, code=11000, message='E11000 duplicate key error index: db.Cluster.$_id_ dup key: { : "dal05" }', details={ }}]

重複したキーを示す単純な検証エラーが発生することを期待していました。

ただし、unique制約は失敗しますが、他の 2 つの検証は正しくトリガーされます (空の値、または 'Dal05' -大文字は許可されていません)。

プロパティにid をマッピングしないslugため、デフォルトのassignedロジックをそのままにして、すべてが期待どおりに機能します。

何か不足していますか?前もって感謝します!

4

1 に答える 1