如何创建域类来在Grails中创建表格,以便共享'数据但不属于'对方?例如,我想制作2个表:
有两个主要栏目的人员表
姓名 - 技能
拉里 - 跳跃,大笑,打孔
卷曲 - 哭,笑
Moe - 打孔,跳舞
包含2个主要栏目的技能表
姓名 - 人员
跳跃 - 拉里
哭 - 卷曲
笑 - 拉里,卷曲
打孔 - 拉里,萌
跳舞 - 萌;
删除技能也会删除Person表中的该技能,而删除Person也会删除Skills表中的该人。我尝试了下面的域类,但是当我生成视图时,我无法输入每个人的多项技能,反之亦然。
class Skill {
String name
Person person
static hasMany = [person: Person]
class Person {
String name
Skill skill
static hasMany = [skill: Skill]
我查看了其他帖子,但解决方案通常有3个或更多课程(通常是书籍,作者,章节),看起来非常复杂。
提前致谢
答案 0 :(得分:1)
我认为你需要:
class Skill {
String name
}
class Person {
String name
static hasMany = [skills: Skill]
}
Grails将创建一个名为PERSON_SKILL的第3个表,其中person_id和skill_id为列。在编辑人物对象具有的技能时,您实际上是在第3个表中编辑记录。
删除人员记录将删除person_id的所有相应person_skill记录。
要删除技能记录,您需要首先手动删除skill_id的所有person_skill记录,然后才能删除技能记录。
实际上,技能充当静态数据表,因此不需要属于另一个域对象。我在我的系统中使用了几个这样的实例,Grails / GORM似乎自动生成了id的obj1_by_obj2链接表。
我认为你的观点/控制器/服务只能处理person.skills集合(即添加,删除),然后让Grails将更新的集合持久保存到第3个表。
放手一搏。