设置Grails GORM字符串的默认maxLength?

Dan*_*n G 5 grails grails-orm

我知道您可以通过grails.gorm.default.constraints配置属性按名称设置默认约束:

grails.gorm.default.constraints = {
    '*'(nullable:true)
}
Run Code Online (Sandbox Code Playgroud)

但有没有办法按类型设置它?我想默认所有字符串默认为maxSize:2000(主要是强制默认的db映射不是varchar(255))

ata*_*lor 3

我认为没有任何方法可以轻松地做到这一点Config.groovy。不过,您可以为休眠创建自定义方言,而不会遇到太多麻烦。例如(使用 Postgres 方言):

 package mypackage;

 import org.hibernate.dialect.PostgreSQLDialect;
 import java.sql.Types;

 public MyPostgresDialect extends PostgresSQLDialect {
     public MyPostgresDialect() {
         super();
         registerColumnType(Types.VARCHAR, "text");
     }
 }
Run Code Online (Sandbox Code Playgroud)

然后更新DataSource.groovy以使用新的方言:

datasource {
    ...
    dialect = mypackage.MyPostgresDialect
}
Run Code Online (Sandbox Code Playgroud)