Ray*_*Ray 8 grails groovy grails-orm
Grails提供了一个可以在域对象上调用的isDirty方法.如何修改Grails域模型系统,以便可以简单地调用方法,以查明是否有任何域对象是脏的.
我正在努力解决一些我未能确定的"未保存的瞬态实例"错误,并且知道什么是脏的很好.有一种优雅的方式来做这个与groovy?
Bur*_*ith 11
将其添加到BootStrap.groovy:
import org.hibernate.Session
Session.metaClass.isDirty = { ->
delegate.persistenceContext.entitiesByKey.values().any { it.isDirty() }
}
Run Code Online (Sandbox Code Playgroud)
这isDirty()为Hibernate会话添加了一种方法,用于检查集合中的顶级实例或实例是否为脏,您可以使用它withSession,例如
boolean dirty = SomeDomainClass.withSession { session -> session.isDirty() }
Run Code Online (Sandbox Code Playgroud)
或者如果你有权访问sessionFactorybean(例如从def sessionFactory依赖注入)
boolean dirty = sessionFactory.currentSession.isDirty()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4081 次 |
| 最近记录: |