-
Notifications
You must be signed in to change notification settings - Fork 199
Description
Original Reporter: oct
Environment: mongodb 1.8.1, linux, 1.0.0-M5, grails 1.3.7
Version: Not Specified
Migrated From: http://jira.grails.org/browse/GPMONGODB-30
It happens if I use .get() to create the instance and the mongo document is missing "version" field. It's missing because I've upgraded to M5 and already had the collection...
It works fine though if instead of .get(new ObjectId(params.id)) I use .findById(new ObjectId(params.id))
To get by this collection should be updated by adding version:0 field.
{code}
2011-04-19 20:40:13,799 [http-8080-1] ERROR errors.GrailsExceptionResolver - Exception occurred when processing request: [POST] /page/create - parameters:
id: 4d66c1f5c9b62d1d123921e8
body: body
enabled: on
title: terms
_action_update: Save page
_enabled:
url: terms
Stacktrace follows:
java.lang.NullPointerException
at org.grails.datastore.gorm.GormInstanceApi.doSave(GormInstanceApi.groovy:169)
at org.grails.datastore.gorm.GormInstanceApi.this$dist$invoke$4(GormInstanceApi.groovy)
at org.grails.datastore.gorm.GormInstanceApi$4.methodMissing(GormInstanceApi.groovy)
at org.grails.datastore.gorm.GormInstanceApi$4.doInSession(GormInstanceApi.groovy:143)
at org.grails.datastore.gorm.SessionCallback$doInSession.call(Unknown Source)
at org.grails.datastore.gorm.SessionCallback$doInSession.call(Unknown Source)
at org.grails.datastore.gorm.AbstractDatastoreApi.execute(AbstractDatastoreApi.groovy:37)
at org.grails.datastore.gorm.GormInstanceApi.save(GormInstanceApi.groovy:141)
at org.grails.datastore.gorm.InstanceMethodInvokingClosure.call(GormEnhancer.groovy:219)
at me.yeay.PageController$_closure7.doCall(PageController.groovy:62)
at me.yeay.PageController$_closure7.doCall(PageController.groovy)
at java.lang.Thread.run(Thread.java:662)
//=======================================================================
import java.util.Date
import org.bson.types.ObjectId
class Page {
ObjectId id
String title
String body
String url
Date dateCreated
Date dateUpdated
String createdBy
Boolean enabled = true
static mapWith = "mongo"
static constraints = {
title(blank:false)
url(blank:false)
dateUpdated(nullable:true)
body(nullable:true)
createdBy(blank:false)
}
static mapping = {
url index:true, indexAttributes: [unique:true, dropDups:true]
}
}
//=================================================================================
def update = {
def pageInstance = Page.get(new ObjectId(params.id))
if (pageInstance) {
pageInstance.properties = params
pageInstance.dateUpdated = new Date()
if (!pageInstance.hasErrors() && pageInstance.save(flush: true)) { // <===== line 62, fails here
flash.message = "${message(code: 'page.saved')}"
redirect(action: "list")
} else {
render(view:'form', model:[page: pageInstance, nextAction:'update'])
}
} else {
flash.message = "${message(code: 'page.not.found')}"
redirect(action: "list")
}
}
{code}