grails belongsTo映射到另一个类的属性

如果子类可能属于父级中的两个属性之一(但不是两者),那么我很难在Grails中掌握belongsTo - hasMany关系的概念。

例如:

class Store {
    Integer storeNumber
    List employees
    List managers

    static hasMany = [employees:Person,
                      managers:Person]
}

class Person {
    String name
    String roll

    static belongsTo = [store:Store]

    static constraints = {
        role inList: ['employee','manager']
    }
}

其中Person位于Store.employees列表或Store.managers列表中

在“映射中重复列”的人员中,我遇到了一个错误。 我尝试了一些静态映射尝试,但仍不理解如何正确执行。

我如何正确映射这个?

提前致谢....


class Store {
    Integer storeNumber
    //List employees
    //List managers

    static hasMany = [employees:Person,
                      managers:Person]
    static constraints = {
      employees(nullable:true)
      managers(nullable:true)
    }
}

class Person {
    String name
    String roll

    static belongsTo = [store:Store]

    static constraints = {
        role inList: ['employee','manager']
    }
}

现在添加一个商店

Store store = new Store(storeNumber: 1).save()
if (store) {
  Person person = new Person(name:'fred', roll:'employee', store:store).save()
  if (person) {
    store.addToEmployees(person)
  }
}

所以,头疼的收益显然是一种反向查找父母的快速方法,另一种方法是下面描述的不关心父母的松散关系,那么你不需要这最后一点,并明显地松开你碰到的依赖性问题远

结束E2A

你需要一个拥有另一个关系

或者,如果你不关心belongsTo关系,那么事情会更容易

static belongsTo = Store

那么这个因素不再是问题。

不同之处在于你现在使用的方法与我向你展示的后一种方法 - 如果查询是从孩子开始的,你可以很容易地从小孩反转回父母

无论哪种方式,你总是可以从父母开始查询,然后加入孩子并寻找孩子方面

所以你有什么套房先生

最终编辑你知道你多年来一直在做这些东西的时候,你会发现以其他方式做事的方式:

假设您确实设置了一个从Parent to Child开始的松散/弱引用,并且您想访问Parent。 这里是:

Class User {
     String username
    static hasMany=[childs:Children]
}

Class Children {
    String firstName
    static belongsTo=User

   // now to get access back to parent user without knowing parent a hackish thing like this can be done:

    User getUser() {
        User.findByChilds(this)
    }
    String getUserName() {
        return user?.username
    }

}

现在从一个孩子你可以做$ {instance.user}或$ {instance.userName}这将绑定回父,并通过子对象本身findByChilds(this)几年前,这将我猜我翘曲

链接地址: http://www.djcxy.com/p/24341.html

上一篇: grails belongsTo map to property in another class

下一篇: Grails criteria query fails with synatx error when using MYSQL