8

これを実行しようとしていますが、エラーが発生します。

「同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられていました」

休止状態のセッションから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}
}
4

1 に答える 1

18

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()のドキュメントを参照してください。

于 2010-02-18T18:58:06.087 に答える