4

如何爲多列創建命名唯一約束?Grails:我如何爲多列創建命名唯一約束?

我有三類:

class Descriptor { 
    // some columns 
} 

class Protein { 
    // some columns 
} 

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

格姆產生一些對不同環境的不同自動生成一個同名的索引。我怎樣才能指定它的名字?

回答

1

嘗試做這樣的:

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

如果需要使用多列索引,那麼你可以指定每個屬性相同的索引的名字。

+0

這是針對特定版本的grails嗎?我目前堅持使用grails 2.2.5,並使用獨特的:['descriptor']不起作用。 (該語法在約束部分中工作,但不在映射部分中)。上述代碼導致對蛋白質的索引名稱爲「蛋白質」的唯一約束,以及蛋白質列上的第二個非唯一索引「protein_idx」。 – burns 2015-06-29 05:29:33

0
String field1 
String field2 
Integer field3 
SomeObject object 

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