这两个域名如下:
class Face {
static hasOne = [nose:Nose]
static constraints = {
nose unique: true
}
}
class Nose {
Face face
static constraints = {
}
}
外键将在Nose表中。鼻子表引用了Face表。 Nose表中的face_id列不可为空。我想知道是否可以使这个列可以为空。我尝试了以下约束变体,但它们似乎都没有改变表的结构。
class Face {
static hasOne = [nose:Nose]
static constraints = {
nose unique: true
nose nullable: true
}
}
I also tried the following
class Nose {
Face face
static constraints = {
face nullable:true
}
}
我需要这两个域之间的一对一关系,但也希望能够创建独立的Nose或Face实体或记录。那可能吗?如果是这样,你能提出一个方法吗?谢谢!欣赏它!
答案 0 :(得分:1)
您可以创建第三个关系域,指定Face和Nose之间的关系。
convert: no data returned `http://www.polyu.edu.hk/iaee/files/pdf-sample.pdf' @ error/url.c/ReadURLImage/264.
convert: no images defined `/www/sites/domain/public_html/test.jpg' @ error/convert.c/ConvertImageCommand/3241.
这满足了您对一对一关系的需求以及两者的独立条目。
答案 1 :(得分:0)
使用hasOne关系,Grails会创建“not null”外键。
class Face{
..
static hasOne = [nose : Nose]
}
class Nose{
Face face
}
在鼻子表中使用“not null”face_id创建“face_id”。
解决方法
class Face{
..
static hasMany = [noses: Nose]
static transients = ['getNose']
Nose getNose{
return this.noses[0] ?: null
}
}
face.nose //这会起作用