我知道您可以通过 grails.gorm.default.constraints 配置属性按名称设置默认约束:
grails.gorm.default.constraints = {
'*'(nullable:true)
}
但是有没有办法按类型设置它?我想默认我的所有字符串默认为 maxSize:2000 (主要是强制默认数据库映射不是 varchar(255))
我知道您可以通过 grails.gorm.default.constraints 配置属性按名称设置默认约束:
grails.gorm.default.constraints = {
'*'(nullable:true)
}
但是有没有办法按类型设置它?我想默认我的所有字符串默认为 maxSize:2000 (主要是强制默认数据库映射不是 varchar(255))
我认为没有任何方法可以轻松地做到这一点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
}
只是为了提供我从同事那里收到的额外答案-在这种情况下不适用,但可能对其他人有所帮助...
如果您可以在属性中遵循命名约定,那么您可以执行以下操作:
'*_s': (maxSize:2000)
我个人不喜欢交叉绑定道具名称和数据类型 - 但想将其作为一种方法包含在内(尽管我更喜欢 ataylor 的方言回答......)