没有属性的Grails很多很多

时间:2014-01-22 09:41:25

标签: grails many-to-many gorm

如何创建域类来在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个或更多课程(通常是书籍,作者,章节),看起来非常复杂。

提前致谢

1 个答案:

答案 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个表。

放手一搏。