我知道您可以通过grails.gorm.default.constraints配置属性按名称设置默认约束:
grails.gorm.default.constraints = {
'*'(nullable:true)
}
但有没有办法按类型设置?我想默认所有字符串默认为maxSize:2000(主要是强制默认的db映射不是varchar(255))
答案 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的方言回答......)