Добавьте это к BootStrap.groovy:
import org.hibernate.Session
Session.metaClass.isDirty = { ->
delegate.persistenceContext.entitiesByKey.values().any { it.isDirty() }
}
Это добавляет метод isDirty()
к сеансам Hibernate, который проверяет, являются ли экземпляры верхнего уровня или экземпляры в коллекциях грязными, и вы можете использовать его с withSession
, например,
boolean dirty = SomeDomainClass.withSession { session -> session.isDirty() }
или если у вас есть доступ к компоненту sessionFactory
(например, из def sessionFactory
внедрения зависимости)
boolean dirty = sessionFactory.currentSession.isDirty()