Grails-试图移除对象,但它们又回来了

Grails-试图移除对象,但它们又回来了,grails,gorm,Grails,Gorm,我有两个域类,Job和Description,它们是简单的一对多关系: Job.groovy class Job { static hasMany = [descriptions: Description] static mapping = { descriptions lazy: false } } Description.groovy class Description { static belongsTo = [job: Job] }

我有两个域类,Job和Description,它们是简单的一对多关系:

Job.groovy

class Job {
    static hasMany = [descriptions: Description]

    static mapping = {
        descriptions lazy: false
    }
}
Description.groovy

class Description {
    static belongsTo = [job: Job]
}
我有两个控制器操作:

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操作中删除了描述,但随后在show操作中立即返回?

removeFromDescriptions
确实从
Description
中删除了
jobInstance
的关系,但实体
Description
仍然存在

System.out.println(“删除后:+jobInstance.descriptions.toString())

由于关系不存在,因此将导致无o/p。请尝试直接获取描述对象,如:

System.out.println("after remove: " + Description.get(//id you just disassociated))
您将成功获得描述

为了避免这种情况,您需要将下面的映射属性添加到
Job
,以便在实体从父实体分离后删除所有孤立项

说明级联:“全部删除孤立项”

比如:


-必须读取。

removeFromDescriptions
确实从
description
中删除了
jobInstance
的关系,但实体
description
仍然存在

System.out.println(“删除后:+jobInstance.descriptions.toString())

由于关系不存在,因此将导致无o/p。请尝试直接获取描述对象,如:

System.out.println("after remove: " + Description.get(//id you just disassociated))
您将成功获得描述

为了避免这种情况,您需要将下面的映射属性添加到
Job
,以便在实体从父实体分离后删除所有孤立项

说明级联:“全部删除孤立项”

比如:


-必须阅读。

您希望删除描述,还是仅仅解除与作业的关联?我希望删除它,尽管解除关联也可能有效。您希望删除描述,还是仅仅解除与作业的关联?我希望删除它,尽管解除关联也可能有效。