Grails:如何为多个列创建命名唯一约束?

4
如何为多个列创建命名唯一约束?
我有三个类:
class Descriptor {
    // some columns
}

class Protein {
    // some columns
}

class DescriptorValue {
    // some columns
    static belongsTo = [protein: Protein, descriptor: Descriptor]
    static constraints = {
        protein(unique:['descriptor'])
    }
}

GORM会为不同的环境创建具有自动生成名称的索引。如何指定其名称?

2个回答

1

尝试像这样做:

static mapping = {
    protein unique:['descriptor'], index: 'protein_idx' //or whatever name you like
}

如果您需要使用多列索引,则可以为每个属性指定相同的索引名称。

这是针对特定版本的Grails吗?我目前卡在Grails 2.2.5上,使用unique:['descriptor']无效(该语法在约束部分有效,但在映射部分无效)。上述代码导致蛋白质具有名为“protein”的唯一约束索引和第二个非唯一索引“protein_idx”在蛋白质列上。 - burns
我认为@stokito是在问你能否命名约束。上面的代码将会给约束(在SQL中)命名为“protein_unique”。据我所知,你无法设置约束名称,这对于唯一约束来说是一个问题,因为讽刺的是,它们的名称需要是唯一的。 - pmc

0
String field1
String field2
Integer field3
SomeObject object

  static constraints = {
        object unique: ['field1','field2', 'field3']
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接