2010-02-18 7 views
7

J'essaye de faire ceci, mais j'obtiens l'erreur.Comment déconnecter un objet de sa session d'hibernation dans grails?

« un objet différent avec la même valeur d'identifiant a déjà été associé à la session »

On dirait que je dois enlever dbobject de la session de mise en veille prolongée.

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

Répondre

15

dbObject.discard() a fait l'affaire.

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

Voir le GORM discard() documentation.