2010-02-18 3 views
7

Я пытаюсь это сделать, но получаю ошибку.Как отключить объект из сеанса спящего режима в grails?

«другой объект с тем же значением идентификатора уже связан с сеансом»

Это выглядит, как мне нужно, чтобы удалить dbObject из спящего режима сессии.

def object = messageParserService.parseMessage(messageType, messageText) 
def dbObject = object.getClass().findByIdentifier(object.identifier) 
if(dbObject != null){ 
    object.id = dbObject.id 
    object.dateCreated = dbObject.dateCreated 
} 
if(!object.save()) { 
    object.errors.each {println it} 
} 

ответ

15

dbObject.discard() сделал трюк.

def object = messageParserService.parseMessage(messageType, messageText) 
def dbObject = object.getClass().findByIdentifier(object.identifier) 
if(dbObject != null){ 
    object.id = dbObject.id 
    object.dateCreated = dbObject.dateCreated 
    dbObject.discard() 
} 
if(!object.save()) { 
    object.errors.each {println it} 
} 

См. GORM discard() documentation.