GORM中的前缀列名称

rdm*_*ler 3 grails grails-orm

与每一个项目,我自动运行与当我使用属性,如保留SQL字问题statususer在我的Grails域类.

所以我总是要添加一个

static mapping = {
    status column:'prefix_status'
}
Run Code Online (Sandbox Code Playgroud)

到我的班级.

我现在想知道是否有一种简单的方法来为所有列添加一个给定的字符串?

如果没有开箱即用的东西,我想有可能创建一个插件,在所有域类中自动注入这样的映射 - 有人可以指向一个代码示例,只要它发生变化就会修改一个类吗?

Ove*_*ous 8

这已在手册中得到解答:

对象关系映射(GORM) - 自定义命名策略

添加到DataSource.groovy配置:

hibernate {
    ...
    naming_strategy = com.myco.myproj.CustomNamingStrategy
}
Run Code Online (Sandbox Code Playgroud)

自定义命名类(下src/groovy/com/myco/myproj/CustomNamingStrategy.groovy):

package com.myco.myproj

import org.hibernate.cfg.ImprovedNamingStrategy
import org.hibernate.util.StringHelper

class CustomNamingStrategy extends ImprovedNamingStrategy {

    String propertyToColumnName(String propertyName) {
        "prefix_" + StringHelper.unqualify(propertyName)
    }
}
Run Code Online (Sandbox Code Playgroud)