2016-09-05 91 views
0

应用信息:Grails:如何从多对多的关系中删除记录?

  • Grails的版本:3.1.8
  • Groovy的版本:2.4.6
  • JVM版本:1.8.0_60

我的域类:

class AgePhase { 

    String agePhase 

    static hasMany = [assessors: Assessor] 

其他域名:

class Assessor { 

    static belongsTo = [AgePhase] 

    static hasMany = [agePhase: AgePhase] 

在我的数据库中,我有评估者,AgePhase和加入评估者/ agePhase表。

如何根据agePhase ID和Assessor ID从评估者/ agePhase表中删除记录?

+0

的jointable的条目不是那么简单的'Assessor.findAllByAgePhase(AgePhase.get(agePhaseID))* .delete()'? –

回答

-1

如果你想删除基于该agePhaseId关系表中的记录和assessorId,你可以尝试以下方法:

def agePhase = AgePhase.get(agePhaseId) 
def assesor = agePhase.assessors.find{ it.id == assessorId } 
agePhase.removeFromAssessors(assesor) 

参考Grails的文档:removeFrom

+0

在所有评估者上调用查找是不好的样式,因为您查询数据库中的所有评估者。 – Bernhard

0

你需要调用removeFrom上的AgePhase对象(因为它有属于这个类)并给出一个Assessor对象作为参数。

例子:

def agePhase = AgePhase.get(agePhaseId) 
def assessor = Assessor.get(assessorId) 

agePhase.removeFromAssessors(assessor) 

这将删除agePhaseId和assessorId

相关问题