在没有级联删除的情况下链接Grails中的域对象

时间:2014-03-10 23:42:24

标签: grails gorm

如何在Grails中链接两个域类而不将删除级联从一个到另一个?我有两个相关的域,但其中一个本质上不优于另一个域。这基本上就是这个想法:

class Project{
    static hasMany = [workers:Employe]
}


class Employe{
    static hasMany = [jobs:Project]
}

如果关闭某个项目,则不应删除所有工作人员,如果一个工作人员退出工作,也不应删除。

1 个答案:

答案 0 :(得分:1)

您可以拆分域名:

class Project{

   def getWorkers() {  
    EmployeeProject.findAll("from EmployeeProject as e where e.project.id=?", [this?.id], [cache: true])
   }
}

class Employee {

    def getProjects() {
      EmployeeProject.findAll("from EmployeeProject as ep where ep.employee.id=?", [this?.id], [cache: true])
   }
}

class EmployeeProject {    
  Employee employee
  Project project   
}

然后你可以使用project.workers,employee.projects并删除EmployeeProject对象而不影响其他类。