grails belong映射到另一个类中的属性
在Grails中,当子类可以属于父类中的两个属性之一,但不能同时属于这两个属性时,我很难理解belongsTo-hasmall关系的概念 例如:grails belong映射到另一个类中的属性,grails,gorm,Grails,Gorm,在Grails中,当子类可以属于父类中的两个属性之一,但不能同时属于这两个属性时,我很难理解belongsTo-hasmall关系的概念 例如: class Store { Integer storeNumber List employees List managers static hasMany = [employees:Person, managers:Person] } class Person {
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']
}
}
其中人员位于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
你需要一个才能拥有另一个关系
或者,如果你不在乎关系的归属,那么事情就会变得更容易
static belongsTo = Store
那么这个因素就不再是问题了
区别在于您当前使用的方法与我向您展示的后一种方法不同——如果查询是从child启动的,那么您可以轻松地从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}这将绑定回父对象,并通过子对象本身查找被孩子查找这几年前,我猜这会让我感到不安工作得很好!我现在明白了,我不需要明确定义员工和经理的列表……因为我是通过hasMany将他们带到类中的?谢谢抱歉,我犯了一个错误,简而言之,我修复了它,你只是获得了反向查找功能,作为一个松散的关系,更容易管理,但松散的能力,因为最重要的因素是家长有空,真的有很多,否则这是一个循环,想要那个,不能有这个,因为它需要那个