Grails: не удалось проверить объект домена при создании нового объекта - PullRequest
0 голосов
/ 29 марта 2011

Когда я создал новый объект домена и вызвал команду save после проверки, он завершился неудачно и вернул ошибку, что id объекта равен нулю!Но идентификатор моего домена будет автоматически сгенерирован последовательностью базы данных, поэтому я не передал ему значение Id.Как я могу решить это ?!Вот мой код:

if (person.validate()) { // It is always false here
    person.save()
} else {
    // something here
}

Большое вам спасибо!

Ответы [ 3 ]

2 голосов
/ 29 марта 2011

Без вашего кода трудно сказать, но я предполагаю, что у вас нет ограничений, поэтому вы не ожидаете никаких проблем. Но есть неявное ограничение not-null для всех полей, если вы не переопределите его с помощью nullable: true, так что это, вероятно, то, что не работает.

Причина, по которой идентификатор является нулевым, заключается в том, что он назначается только после успешного вызова save().

0 голосов
/ 29 марта 2011

На самом деле, вам не нужно вызывать validate() до save(), поскольку save() неявно вызывает validate перед сохранением объекта. Вы можете сделать это так:

if (person.save(flush:true)) {
   // Report success
} else {
   // Report error
   person.errors.each {
        println it
   }
}

О причине вашей проблемы, я думаю, невозможно сказать, не зная вашего доменного объекта.

0 голосов
/ 29 марта 2011

Полагаю, вы добавили поле с именем id в свой класс Person Model. Обычно Grails сделает это за вас, поэтому вам не нужно добавлять его

...