2017-12-24 32 views
0

이것은 Grails의에서 고객의 도메인 클래스 (버전 3.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 값을 사용하여 필드 중 하나를 저장하려고하면 문제가 발생합니다. 널 (null)에 값을 설정

customer.telephone = null 
customer.save() 

MongoDB의 컬렉션에서 분야에 영향을주지 않습니다, 그 값은 업데이트 이전의 값으로 설정 상태로 유지됩니다. 예를 들어 전화기가 "1234567"로 설정되어 있고 Null로 업데이트하면 MongoDB의 값은 "1234567"로 유지됩니다.

save()failOnError: trueflush: true을 사용해 보았습니다. 둘 다 작동하지 않습니다. 어떤 제안?

+0

null 값으로 저장 한 후 lastUpdated가 업데이트 되었습니까? null이 아닌 다른 값이 null 값과 동일한 커밋에서 갱신 되었습니까? –

+0

@MikeW, lastUpdated 필드가 null 값으로 저장 한 후 업데이트 중입니다. 그리고 널이 아닌 값은 널값과 동일한? 미트에서 갱신됩니다. – Haris

답변

0

mongo 드라이버를 직접 사용해보십시오. mongo 문제인지 아니면 Gorm 문제인지 직접 확인할 수 있습니다.

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