在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
你需要一个才能有另一个关系
或者,如果你不关心财产关系,那么事情就会变得更简单,比如
static belongsTo = Store
那么这个因素就不再是一个问题了。
无论哪种方式,您都可以始终从父级开始查询,然后连接子级并查找子级方面
先生,有什么适合您的呢
最后编辑你知道,当你做这件事多年,你找到了以另一种方式做事情的方法:
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
}
}
今天我遇到了这个烦人的bug,花了我几个小时才解决。我在spring boot申请中有以下enity类 入口模型类 和用户模型类 } 如您所见,Entry类与User类具有ManyToOne关系(一个用户有许多条目)。如果从User类中删除单参数构造函数并尝试将Entry对象保存到数据库,则会出现以下错误: JSON分析错误:无法构造的实例(尽管至少存在一个创建者):没有字符串参数构造函数/工厂方
问题内容: 考虑以下类别: 映射到“订单”表。是否可以通过外键关系将客户名属性映射到客户表? 问题答案: 是的,您可以为此使用联接映射元素。另一种选择是映射视图而不是表。但是,如果可能的话,您应该采用面向对象的方法,并绘制订单和客户之间的多对多关系。
我是Java中Spring框架的新手。并且有一些问题… 我的应用程序使用Spring、Spring seq的安全性、Hibernate框架。 我正在编写一些简单的应用程序。 我有一个页面,可以通过Hibernate将用户添加到db。 用户类: 角色类: 保存在控制器中: 在UserDAO中保存 我在页面上有一个选择块,我可以在其中选择用户角色作为字符串。 所以在保存用户时,我有 所以据我所知,我应
下面是的代码片段,它引用了col1和col2 这种情况有什么解决办法吗? parentPK.java java转换为@embedbable,扩展了parentpk.java 在上面,映射col1和col2是从parentpk.java继承来的,如果在xml映射中的某个ownerclass.java中使用ChildPk作为外键,但在带注释的映射中不能使用,则可以访问它们。 我不能改变我的类的结构,因
下午好: 我最近创建了一个类“X”,它包含一个单一属性“network”,定义为一个映射,使用字符串作为键,另一个映射作为值(double map)。对于此类,将使用“hashmap”实现。 该类大致如下所示: 但是,当我执行函数中包含的network.put指令时,编译器会自动检测到一个错误:“表达式预期”。如果可能,我想知道在向映射中添加新的键值元素时是否使用了错误的语法,或者是否是映射的初始
“userinfo”在活动的顶部声明为