2016-09-05 11 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] 

私のデータベースには、Assessor、AgePhaseとjoin assessor/agePhaseテーブルがあります。

agePhase IDとAssessor IDに基づいてassessor/agePhaseテーブルからレコードを削除するにはどうすればよいですか?

+0

のjointableのエントリは、それが* 'Assessor.findAllByAgePhase(AgePhase.get(agePhaseID))のように単純ではありませんが削除されます.delete() '? –

答えて

-1

あなたはagePhaseIdassessorIdに基づいてリレーショナルテーブルからレコードを削除したい場合は、次のことを試すことができます:Grailsのドキュメントの

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

参考:removeFrom

+0

あなたがデータベース内のすべてのassesorsを照会するので、すべてのassessorsでfindを呼び出すのは悪いスタイルです。 – Bernhard

0

AgePhaseオブジェクトのremoveFromを呼び出し(このクラスに属しているため)、Assessorオブジェクトを引数として渡す必要があります。

例:

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

agePhase.removeFromAssessors(assessor) 

これはagePhaseIdとassessorId

関連する問題