2016-09-05 130 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

相關問題