traducir significa qué inglés ingles español cómo grails groovy gorm

significa - Grails: dime si algo está sucio.



traducir al español (2)

Grails proporciona un método isDirty que se puede invocar en objetos de dominio. ¿Cómo se podría modificar el sistema de modelo de dominio de Grails, de forma que se pudiera simplemente llamar a un método, para averiguar si algún objeto de dominio está sucio?

Estoy luchando con algunos errores de "instancia transitoria no salvada" que no he podido identificar, y sería genial saber qué está sucio. ¿Hay una forma elegante de hacer esto con Groovy?


Agregue esto a BootStrap.groovy:

import org.hibernate.Session Session.metaClass.isDirty = { -> delegate.persistenceContext.entitiesByKey.values().any { it.isDirty() } }

Esto agrega un método isDirty() a las sesiones de Hibernate que verifica que las instancias o instancias de nivel superior en las colecciones están sucias y se puede usar con withSession , por ejemplo

boolean dirty = SomeDomainClass.withSession { session -> session.isDirty() }

o si tiene acceso al bean sessionFactory (por ejemplo, a partir de una inyección de dependencia de def sessionFactory )

boolean dirty = sessionFactory.currentSession.isDirty()


Según la respuesta de Burt, uno también podría hacer:

Session.metaClass.whatsDirty = { -> def everythingDirty = [] delegate.persistenceContext.entitiesByKey.values().each { if (it.isDirty()) everythingDirty.add(it) } return everythingDirty }