簡體   English   中英

Grails + mysql以大寫形式創建表名和列名

[英]Grails + mysql Create table name and column name in Upper case

從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塊的DataSource.groovy中指定它:

hibernate {
   ...
   naming_strategy = com.foo.bar.UppercaseNamingStrategy
}

我同意Burt,您還可以添加以下代碼,通過覆蓋其他方法將數據庫中生成的列名更改為大寫

public String propertyToColumnName(String propertyName) {
    return super.propertyToColumnName(propertyName).toUpperCase();
}

public String columnName(String columnName) {
    return super.columnName(columnName).toUpperCase();
}

public String joinKeyColumnName(String joinedColumn, String joinedTable) {
    return super.joinKeyColumnName( joinedColumn, joinedTable ).toUpperCase();
}

public String foreignKeyColumnName(String propertyName, String propertyEntityName, String propertyTableName, String referencedColumnName) {
    return super.foreignKeyColumnName(propertyName, propertyEntityName, propertyTableName, referencedColumnName).toUpperCase();
}
public String logicalColumnName(String columnName, String propertyName) {
    return super.logicalColumnName(columnName, propertyName).toUpperCase();
}

public String logicalCollectionColumnName(String columnName, String propertyName, String referencedColumn) {
    return logicalCollectionColumnName(columnName, propertyName, referencedColumn).toUpperCase();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM