Grails + GORM:有没有和hibernate的@Generated等价的东西?
问题描述:
我目前正在开发一个grails项目,在那里我必须将遗留数据库与GORM进行映射。某些数据库列是由触发器自动生成的。Grails + GORM:有没有和hibernate的@Generated等价的东西?
我现在的问题是,我保存一个实体后,自动生成的列的状态不会反映在实体中。
我知道我可以做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()
}
可能不是,我想你应该在grails数据映射项目中为这个功能请求创建一个新问题 –