По неосторожности можно наткнуться на
ERROR hibernate.AssertionFailure - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session) Message: null id in Domain entry (don't flush the Session after an exception occurs)
пытаясь изменить свойства домена, например, в событии beforeInsert.
Простой пример:
def beforeInsert() { someField = fieldModificationService.modify(someField) }
Если Hibernate сам управляет сохранением данных в базе, а по умолчанию это так, то тут может произойти flush, что в контексте события домена запрещено.
Чтобы этого не происходило можно обернуть сервис в @Transactional(readOnly = true):
@Transactional(readOnly = true) class FieldModificationService { def grailsApplication ... }