Job と Description という 2 つのドメイン クラスが、単純な 1 対多の関係にあります。
Job.groovy
class Job {
static hasMany = [descriptions: Description]
static mapping = {
descriptions lazy: false
}
}
説明.groovy
class Description {
static belongsTo = [job: Job]
}
2 つのコントローラー アクションがあります。
def removeDescriptionFromJob(Long id) {
def jobInstance = Job.get(id)
System.out.println("before remove: " + jobInstance.descriptions.toString())
def description = jobInstance.descriptions.find { true }
jobInstance.removeFromDescriptions(description)
jobInstance.save(flush: true)
System.out.println("after remove: " + jobInstance.descriptions.toString())
redirect(action: "show", id: id)
}
def show(Long id) {
def jobInstance = Job.get(id)
System.out.println("in show: " + jobInstance.descriptions.toString())
}
removeDescriptionFromJob にリクエストを送信すると、次のように出力されます。
before remove: [myapp.Description : 1]
after remove: []
in show: [myapp.Description : 1]
removeDescriptionFromJob アクションで Description が削除され、その直後に show アクションで戻ってくるのはなぜですか?