hibernate - Grails + GORM:是否有等同于 hibernate 的@Generated?

标签 hibernate grails entity gorm

我目前正在执行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/

相关文章:

mysql - 查询时间长

java - Hibernate 在读取 Java Calendar 对象并将其写入 SQL TIMESTAMP 时使用什么时区?

hibernate - null Hibernate @Version,为什么没有 StaleObjectStateException?

java - 通过 JPA 为 MySQL 节省时间

grails - 在Grails中加载UrlMappingsPlugin时出错

php - 如何从 Symfony2 上的另一个 Bundle 加载实体

java - 使用 Hibernate 表示表关系是个好主意吗?

grails - 如何在子查询中实现计数

grails - Grails插件获取同一版本的升级和降级消息

java - 删除实体会自动更新它们的关系吗?