2014-09-24 46 views
0

我有两个表。其中一个包含国家列表(ISO代码和全名),第二个包含reg的状态。 每个注册条目只能有一个国家,但每个国家可以有多个注册条目。 到目前为止挺直。设置对值组合的唯一约束

的regstat类设置如下:

class Regstat { 
    static hasOne = [country: Country] 
    String reg 
    int status 
    Date impdate 
    static constraints = { 
     reg(inList: ["FATCA", "ITC2014", "AEOI"]) 
    } 
    static mapping = { 
     index: 'reg' 
    } 
} 

这是什么问题?我想添加一个约束条件,指出我只希望每个国家注册一次。例如,一个国家可以拥有FATCA,IRC2014或AEOI,但每个国家只有一个。 任何建议如何创建这样的约束? 东西沿着

constrain = { 
    reg+country(unique) 
} 
+0

这不是Grails问题吗? – Opal 2014-09-24 09:56:37

+0

谢谢Opal纠正语法以及:),这也是一个Grails问题 – vrghost 2014-09-24 10:18:45

+0

可能重复的[Grails域类:多列的唯一约束](http://stackoverflow.com/questions/7583380/grails -domain-class-unique-constraint-for-multiple-columns) – 2014-09-24 10:33:29

回答

2

The unique constraint行可以采取另一种属性的名称(或名称的列表)充当了独特的“范围”:

static constraints = { 
    reg(inList: ["FATCA", "ITC2014", "AEOI"], unique:'country') 
} 

你会得到同样的约束行为是否您将reg设置为与countrycountry相对于reg是唯一的,不同之处在于约束失败时两个属性中的哪一个被视为“无效” - reg unique:'country'会将错误reg,而country unique:'reg'会在country上输入错误。

+0

对不起,它花了一段时间,但得到了尝试,它的工作魅力 – vrghost 2014-09-28 21:59:28