从 Grails 域类创建 mysql 表不会生成大写字母的表名和列名。表名以小写形式创建。即使在使用大写字母的表名进行逆向工程时,域类也仅以小写字母生成。如何创建表名和列名大写的表?
最佳答案
您可以使用自定义 NamingStrategy
自定义表名。默认情况下,Grails 使用 ImprovedNamingStrategy
,但您可以按照文档中的说明使用您的:http://grails.org/doc/latest/guide/GORM.html#customNamingStrategy
ImprovedNamingStrategy
的这个子类将生成大写名称:
package com.foo.bar
import org.hibernate.cfg.ImprovedNamingStrategy
class UppercaseNamingStrategy extends ImprovedNamingStrategy {
private static final long serialVersionUID = 1
String classToTableName(String className) {
super.classToTableName(className).toUpperCase()
}
String collectionTableName(String ownerEntity, String ownerEntityTable, String associatedEntity, String associatedEntityTable, String propertyName) {
super.collectionTableName(ownerEntity, ownerEntityTable, associatedEntity, associatedEntityTable, propertyName).toUpperCase()
}
String logicalCollectionTableName(String tableName, String ownerEntityTable, String associatedEntityTable, String propertyName) {
super.logicalCollectionTableName(tableName, ownerEntityTable, associatedEntityTable, propertyName).toUpperCase()
}
String tableName(String tableName) {
super.tableName(tableName).toUpperCase()
}
}
在 hibernate
block 的 DataSource.groovy
中指定:
hibernate {
...
naming_strategy = com.foo.bar.UppercaseNamingStrategy
}
关于mysql - Grails + mysql 创建大写的表名和列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21083340/