Изменить и проверить объект домена Grails, не сохраняя его - PullRequest
7 голосов
/ 12 октября 2011

Как использовать GORM .get для получения объекта o, изменения некоторых полей и вызова o.validate () для поиска ошибок без сохранения Hibernate объекта в БД. сброс сам по себе не мешает сохранить. Ни один не делает

                clazz.withTransaction { status ->
                  row.validate(flush:false)
                  row.discard()
                  status.setRollbackOnly()
                }

Этот пост рекомендует использовать объект команды, но этот код будет применяться ко многим другим объектам домена. Должен быть простой способ (какой-либо параметр передан для проверки?), Чтобы дать Hibernate инструкцию «не сохранять». Нужно ли каждый раз создавать новый экземпляр?

1 Ответ

11 голосов
/ 13 октября 2011

Если вы используете read() вместо get() для извлечения объекта, он не будет автоматически сохранен во время сброса (например, в конце транзакции или веб-запроса). Это не только для чтения, так как вы можете позвонить save(), и он будет сохраняться - он просто не будет автоматически сохранять при загрязнении.

...