mysql - Grails + mysql 创建大写的表名和列名

标签 mysql grails grails-orm

从 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/

相关文章:

php - 用户信息未进入MYSQL数据库

c# - 如何从mysql数据库中提取固定数量的项目

hibernate - Grails 事务 : duplicate data where there shouldn't be any

java - 使用同步块(synchronized block)预订座位

grails - 如何搜索对另一个域类实例的引用为空或与给定值匹配的域类实例?

mysql - 将类型从简单字符串更改为文本后的 Grails - 第 1 行的 'text' 列的数据太长

php - 这个sql语句怎么写

grails - 安装 spring-security-core grails 插件后,如何让 IDEA 了解 jar 文件?

grails - Grails 中的 lib 目录

由于端口号更改,mysql无法打开