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)
几年前,这将我猜我翘曲
上一篇: grails belongsTo map to property in another class
下一篇: Grails criteria query fails with synatx error when using MYSQL