针对值组合设置唯一约束
Posted
技术标签:
【中文标题】针对值组合设置唯一约束【英文标题】:Set unique constraint against combination of values 【发布时间】:2014-11-18 18:13:05 【问题描述】:我有两张桌子。一个包含国家列表(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'
这是问题所在?我想添加一个约束,指出我只希望每个国家/地区有一个 reg 条目。例如,一个国家可以有 FATCA、IRC2014 或 AEOI,但每个国家只能有一个。 有什么建议我将如何创建这样的约束? 类似于
constrain =
reg+country(unique)
【问题讨论】:
这不是一个 grails 问题吗? 感谢 Opal 也纠正了语法:),这也是一个 grails 问题 Grails domain class: unique constraint for multiple columns的可能重复 【参考方案1】:The unique
constraint 可以采用另一个属性名称(或名称列表)作为唯一性的“范围”:
static constraints =
reg(inList: ["FATCA", "ITC2014", "AEOI"], unique:'country')
无论您将reg
设置为相对于country
唯一还是将country
设置为相对于reg
唯一,您都会得到相同的约束行为,区别在于这两个属性中的哪一个被视为“无效” " 当约束失败时 - reg unique:'country'
会将错误放在 reg
上,而 country unique:'reg'
会将错误放在 country
上。
【讨论】:
抱歉,花了一段时间,但试了一下,效果很好以上是关于针对值组合设置唯一约束的主要内容,如果未能解决你的问题,请参考以下文章