5

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

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

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

4

2 回答 2

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");
     }
 }

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

datasource {
    ...
    dialect = mypackage.MyPostgresDialect
}
于 2013-10-17T17:04:21.653 回答
2

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

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

'*_s': (maxSize:2000)

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

于 2013-10-18T16:32:21.087 回答