![](/img/trans.png)
[英]Grails domain classes static properties hasOne, hasMany and belongsTo
[英]Grails Domain Class : hasOne, hasMany without belongsTo
我是Grails的新手。 我可以使用“hasOne”或“hasMany”而不使用“belongsTo”到另一个域类吗?
提前致谢。
是的你可以。 请参阅Grails doc中的示例: http : //grails.org/doc/2.3.8/guide/GORM.html#manyToOneAndOneToOne
来自doc的hasMany(没有belongsTo)示例:
一对多关系是指一个类(例如Author)具有另一个类的许多实例,例如Book。 使用Grails,您可以使用hasMany设置定义这样的关系:
class Author {
static hasMany = [books: Book]
String name
}
class Book {
String title
}
在这种情况下,我们有一对一的单向。 默认情况下,Grails会将此类关系映射到连接表。
来自doc的hasOne(没有belongsTo)示例:
例C
class Face {
static hasOne = [nose:Nose]
}
class Nose {
Face face
}
请注意,使用此属性会将反向表上的外键放到上一个示例中,因此在这种情况下,外键列存储在名为face_id的列内的nose表中。 此外,hasOne仅适用于双向关系。
最后,在一对一关系的一侧添加唯一约束是个好主意:
class Face {
static hasOne = [nose:Nose]
static constraints = {
nose unique: true
}
}
class Nose {
Face face
}
是的,你可以,但它的行为不同
class Author {
static hasMany = [books: Book]
String name
}
class Book {
String title
}
在这种情况下,如果您删除作者仍然存在且独立的书籍。
class Author {
static hasMany = [books: Book]
String name
}
class Book {
String title
static belongsTo = [author: Author]
}
在另一种情况下,如果您删除作者,它将删除该级别作者的所有书籍。
多对一/一对一:保存并删除从所有者到依赖(具有belongsTo的类)的级联。
一对多:保存始终从一侧到多侧保持级联,但如果多方都属于,那么删除也会在该方向级联。
多对多:只保存从“所有者”到“依赖”的级联,而不是删除。
http://grails.org/doc/2.3.x/ref/Domain%20Classes/belongsTo.html
class Student {
String name
User userProfile
static hasMany =[files:File]
}
class User {
String uname
Student student
}
class File {
String path
Student student // specify the belongs to like this no belong to
}
完成!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.