在Grails文档中:http://grails.org/doc/2.3.x/guide/GORM.html 它说在1:1中添加一个独特的约束是很好的做法 因此,如果一张脸有一个鼻子,我们应该这样做:
class Face {
static hasOne = [nose:Nose]
static constraints = {
nose unique: true
}
}
但为什么?当然,约束隐含在基数中吗?
那我们为什么要这样做呢?
答案 0 :(得分:3)
放置唯一约束的原因是为了确保两个面具有相同的鼻子。由于这是1:1的关系,鼻子的Id保持在脸上。这就是原因。
答案 1 :(得分:1)
确保只有一个鼻子知道当前的脸部。
没有这个约束:
Face face = new Face();
Nose nose1 = new Nose();
face.nose = nose1;
face.save(flush: true);
Nose nose2 = new Nose();
face.nose = nose2;
face.save(flush: true); // no error, but in DB, nose1 and nose2 reference the same face_id