Каков наилучший способ убедиться, что экземпляр класса домена не изменен или изменен - PullRequest
0 голосов
/ 09 мая 2018

Когда я получаю экземпляр домена через GORM, существует потенциальная опасность изменения кода этого экземпляра / строки.Тем более, что Grails автоматически сохраняет его даже без вызова .save () для экземпляра.

Единственный способ, которым я обеспечил это раньше, - это убедиться, что я вызывал discard () для экземпляра в прошлом.Есть ли лучший способ?

Это для Грааля 2.2.5

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Какая версия Grails / GORM?

Можно сделать эту работу в транзакции @ReadOnly (или @Transactional(readOnly = true)) - будет выдано исключение при попытке операции записи.

0 голосов
/ 09 мая 2018

Если вы хотите всегда требовать ручные вызовы .save (), это возможно, изменив режим hibernate.flush.mode, хотя даже в этом есть свои риски. Использование .discard () - ваша лучшая ставка в большинстве случаев. Как указывает Антон, вы можете использовать .isDirty (), чтобы узнать, изменилось ли что-нибудь, но это не помешает сохранению.

...