【发布时间】:2017-05-26 07:34:37
【问题描述】:
当为域类定义唯一约束时,grails 为数据库生成一个基于属性名称的约束名称。 当使用 Postgres 作为数据库时,以下约束定义的名称将是 'unique_language'。
static constraints = {
language nullable: false, unique: 'product'
}
当我现在有了第二个域类,它对同名的属性也有唯一约束时,grails 将再次创建一个名为“unique_language”的数据库约束。 问题是,对于 Postgres,唯一约束的名称对于数据库模式也必须是唯一的。这意味着在我们的例子中,第二个 约束未应用于数据库。
有没有办法自定义或定义唯一索引名称?
我一直在寻找是否可以增强 NamingStrategy,但我找不到进行更改的地方。
我们目前使用的是 grails 2.4.4
【问题讨论】:
-
@vahid:我不认为这是同一个问题。这里的问题是唯一约束的名称对于整个数据库必须是唯一的,但 grails 或 hibernate 只是创建这样的键:
unique_propertyname。当您有多个属性名称相同且都具有唯一约束的域类时,这显然会失败。
标签: postgresql grails grails-orm grails-2.0