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)
}
}
所以很明显有头痛,增益为反向lookingup父的快捷方式,选择是松散的关系如下所述,不关心父母,所以你不需要这最后一点,并明显地松动你迄今命中的依赖性问题
结束E2A
你需要一个有其他关系
另外,如果你不关心属于关联关系,那么事情会更容易喜欢
static belongsTo = Store
那么该因素已不再一个问题。
不同的是与你有VS我向您展示了后者目前的方法 - 你可以从一个孩子反向走回父母很容易,如果查询是从孩子
无论哪种方式,你总是可以从父母开始查询开始然后再加入儿童和寻找孩子方面
等什么套房,为您先生
最后编辑 当你在做这个东西了多年,你觉得以另一种方式做事的方法你知道:
假设您确实设置了一个从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)
年前的这个本来找我猜我翘曲
工作得很好!我现在看到,我不需要明确定义员工和经理的名单......因为我通过hasMany将他们带入课堂?谢谢! – dm123
对不起,我犯了一个错误在那里,我修正了它简而言之,你只是获得反向查找功能作为一个松散的关系,更容易管理,但松散的能力,这种能力 – Vahid
ofcourse最重要的因素是家长有空可以为hasMany,否则它是一个循环这是想要的,因为它需要这个,所以没有这个能力 – Vahid