针对值组合设置唯一约束

时间:2014-09-24 09:47:24

标签: grails

我有两张桌子。一个包含国家列表(ISO代码和全名),第二个包含reg的状态。 每个reg条目只能有一个国家/地区,但每个国家/地区可以有多个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)
}

1 个答案:

答案 0 :(得分:2)

The unique constraint可以使用另一个属性名称(或名称列表)作为"范围"唯一性:

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

相对于regcountrycountry的{​​{1}}是唯一的reg,您会得到相同的约束行为,不同之处在于这两个属性被视为"无效"当约束失败时,reg unique:'country'会将错误放在reg上,而country unique:'reg'会将错误放在country上。