2017-12-24 8 views
0

Dies ist eine Kunden-Domain-Klasse in Grails (v3.1):Grails mit MongoDB nicht null Wert zu speichern

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 
    } 
} 

Ich kann in den Kunden Sammlung in MongoDB einfügen und aktualisieren Sie diese Klasse verwenden, und es funktioniert fein. Das Problem tritt auf, wenn ich versuche, eines der Felder mit einem Nullwert zu speichern.

customer.telephone = null 
customer.save() 

Wert null Einstellung hat keine Auswirkung auf dem Gebiet in MongoDB Sammlung, wird sein Wert vor der Aktualisierung auf den Wert gesetzt bleiben. Wenn das Telefon beispielsweise auf "1234567" eingestellt ist und wenn ich es auf Null aktualisiere, bleibt der Wert in MongoDB "1234567".

Ich habe versucht mit failOnError: true und flush: true in save(), beide funktionieren nicht. Irgendwelche Vorschläge?

+0

Wird lastUpdated nach dem Speichern mit einem Nullwert aktualisiert? Werden andere Nicht-Null-Werte in demselben Commit wie der Nullwert aktualisiert? –

+0

@MikeW, lastUpdated-Feld wird nach dem Speichern mit Nullwert aktualisiert. Und Nicht-Null-Werte werden in demselben Commit wie der Nullwert aktualisiert. – Haris

Antwort

0

Sie könnten versuchen, den Mongo-Treiber direkt zu verwenden, um zu sehen, ob es sich um ein Mongo-Problem oder ein Gorm-Problem handelt.

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