我目前正在执行grails项目,该项目必须使用GORM映射旧数据库。一些数据库列由触发器自动生成。
现在的问题是,保存实体后,自动生成的列的状态不会反射(reflect)在实体中。
我知道我可以执行entity.refresh()
来从数据库强制重新加载整个实体。但是我认为这不是可行的解决方案,因为这种情况应该透明地处理。而且我不想在每次保存后显式刷新实体。
我确实知道在休眠状态下存在一个@Generated(GenerationTime.INSERT)
批注,该批注正是我想要做的。
是否有使用GORM的等效方法?
最佳答案
我不相信GORM会原生支持此功能(但是如果其他答案可以显示出一种方法,我会很感兴趣!)但是这里的文档:http://docs.grails.org/latest/ref/Domain%20Classes/refresh.html建议刷新确实是正确的方法。
您可以将其与受支持的事件结合使用(afterInsert和afterUpdate应该适合您)以刷新对象。这不是完全透明的,但至少完全包含在您的域对象中。
// I didn't actually test this but it should work like this, or similar.
//Put the method in your domain object itself and it will be called automatically.
def afterInsert(){
this.refresh()
}
关于hibernate - Grails + GORM:是否有等同于 hibernate 的@Generated?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44952342/