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

时间:2013-10-17 16:43:17

标签: grails gorm

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

grails.gorm.default.constraints = {
    '*'(nullable:true)
}

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

2 个答案:

答案 0 :(得分:3)

我认为在Config.groovy中没有办法轻易做到这一点。你可以为hibernate创建一个自定义方言而不会有太多麻烦。例如(使用Postgres方言):

 package mypackage;

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

 public MyPostgresDialect extends PostgresSQLDialect {
     public MyPostgresDialect() {
         super();
         registerColumnType(Types.VARCHAR, "text");
     }
 }

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

datasource {
    ...
    dialect = mypackage.MyPostgresDialect
}

答案 1 :(得分:2)

只是提供我从同事那里得到的额外答案 - 这在这种情况下不适用,但可能对其他人有帮助......

如果您可以遵循属性中的命名约定,那么您可以执行以下操作:

'*_s': (maxSize:2000)

我个人不喜欢交叉道具名称和数据类型 - 但希望将其作为一种方法(尽管我更喜欢ataylor的方言回答......)