[英]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.