JSON Grail Groovy更新SQL

时间:2011-06-28 21:35:08

标签: sql grails groovy sql-update

使用带有grails的Groovy脚本,并希望对数据库中的记录进行更新。我做的基本从JSON获取对象并将其转换为Domain类,然后对其执行save()。根据我的理解,因为我是Groovy和grails的新手,如果“id”已经存在,则应该更新save。但是我没有得到,我得到关键'PRIMARY'的“重复条目'1'的标准SQL错误”。我该如何解决这个问题?

def input = request.JSON
def instance = new Recorders(input)
instance.id = input.getAt("id")
instance.save()

我的域名是:

class Recorders {

Integer sdMode
Integer gsmMode

static mapping = {
    id generator: "assigned"
}

static constraints = {
    sdMode nullable: true
    gsmMode nullable: true
}
}

1 个答案:

答案 0 :(得分:2)

而不是new Recorders(input),你可能应该get

def input = request.JSON
def instance = Recorders.get(input.getAt('id'))
instance.properties = input
instance.save()

修改

(来自你的评论)如果它不存在而你想插入它:

def input = request.JSON
def id = input.getAt('id')
def instance = Recorders.get(id)
if(!instance) {
    instance = new Recorders(id: id)
}
instance.properties = input
instance.save()

我不使用分配的id生成器,所以我不确定Grails是否会自动绑定id(因为它期望它被分配)。如果是,您可以从id: id构造函数中删除Recorders()