2017-12-24 22 views
0

これはGrailsの中に顧客のドメインクラス(V3.1):Grailsの

class Customer { 

    static mapWith = 'mongo' 

    String id 
    String email 
    Boolean blacklisted 
    String name 
    String telephone 

    Date dateCreated 
    Date lastUpdated 

    String language = 'en' 

    static constraints = { 
     email nullable: false 
     blacklisted nullable: false 
     name nullable: true 
     language nullable: true 
     telephone nullable: true 
    } 

    static mapping = { 
     version false 
    } 
} 

私が挿入し、このクラスを使用してのMongoDBにおけるカスタマー・コレクションに更新し、それが働いていることができます良い。この問題は、NULL値を持つフィールドの1つを保存しようとしたときに発生します。 nullに値を設定

customer.telephone = null 
customer.save() 

は、その値が更新前の値に設定されたままになります、MongoDBのコレクション内のフィールドには効果がありません。たとえば、電話機が「1234567」に設定されていて、Nullに更新すると、MongoDBの値は「1234567」のままです。

私はfailOnError: trueflush: truesave()に使用しようとしましたが、どちらも動作していません。助言がありますか?

+0

null値で保存した後にlastUpdatedが更新されましたか?ヌル値と同じコミットで他の非NULL値が更新されていますか? –

+0

@MikeW、lastUpdatedフィールドは、null値で保存した後に更新されています。また、null以外の値は、NULL値と同じコミットで更新されます。 – Haris

答えて

0

mongoドライバを直接使用して、mongoの問題かGormの問題かを試すことができます。

Customer.collection.updateOne([_id:'the-id'],[telephone:null])