JSON Grail Groovy Обновление SQL - PullRequest
2 голосов
/ 29 июня 2011

С помощью скрипта Groovy с граалями и хотите обновить запись в базе данных. Я делаю базовый метод получения объекта из JSON и преобразовываю его в класс Domain, а затем выполняю save () для него. Из того, что я понимаю, так как я новичок в Groovy и Grails, сохранение должно обновиться, если «id» уже существует. Но я не понимаю, я получаю стандартную ошибку SQL «Дублирующая запись« 1 »для ключа« ПЕРВИЧНЫЙ »». Как мне это исправить?

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 Ответ

2 голосов
/ 29 июня 2011

Вместо того, чтобы делать 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()

Я не использую назначенные генераторы идентификаторов, поэтому я не уверен, будет ли Grails автоматически связывать идентификатор (поскольку он ожидает, что он будет назначен)).Если это так, вы можете удалить id: id из конструктора Recorders().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...