belongsTo的行为

时间:2015-11-14 17:59:44

标签: grails associations gorm

之间有什么区别
  

static belongsTo [作者:作者]

  

static belongsTo =作者

让我们考虑两个域类。

Class Author{
    String name 
}

Class Books{
    String name
    static belongsTo = Author
}

静态belongsTo =作者保留在Books域中时,它对db没有影响。但是, static belongsTo = [author:Author] 会创建对Author类的反向引用,并且db中也有author_id列。那么,实际上单独使用 static belongsTo = Author 的是什么呢。 这是在grails docs(http://grails.github.io/grails-doc/latest/ref/Domain%20Classes/belongsTo.html)中进行的。

另外,使用以下两个之间有什么区别:

Class Books{
    String name
    static belongsTo = [author : Author]
} 
Class Books{
    String name
    Author author
}

static belongsTo = [author:Author] 仅用于级联目的,是真的还是有不同的用例。

任何人都可以详细解释这些内容,而无需将其与hasOne或hasMany相关联。提前谢谢。

2 个答案:

答案 0 :(得分:1)

多对多关联需要使用belongsTo而不使用反向引用。例如,假设您有以下域类:

class Book {
    String name
    Author author

    static hasMany = [categories: Category]
}

class Category {
    String name

    static hasMany = [books: Book]
}

如果您尝试按原样使用它们,则会出现如下异常:

在多对多关系中没有在域类[class Book]和[class Category]之间定义所有者。示例:static belongsTo = Category

解决方案是使其中一个域类成为多对多关联的所有者。使用我的示例,我认为让Category所有者更有意义。但是,后引用不起作用,因为可能有多个Category。所以,这是没有反向引用的belongsTo

class Book {
    String name
    Author author

    static hasMany = [categories: Category]
    static belongsTo = Category
}

答案 1 :(得分:0)

如果您使用author,则会将类型为Author的名为static belongsTo = Author的属性添加到类中作为后引用。 public AuthorizeFromConfigAttribute(string Role) { var RolesFromConfig = (PlRoleConfiguration)ConfigurationManager.GetSection("PlRoles"); foreach (PlRoleElement Element in RolesFromConfig.Elements) { Role = Role.Replace(Element.Name, Element.Group); } this.Roles = Role; } 不会发生。