oracle - 如何在Grails中删除子域行

标签 oracle grails gorm grails-2.0 grails-domain-class

我正在将数据保存到我的参加 session 表以及参加 session 详细信息表中,该表是参加 session 表的子表。但是,当我只想删除一个子表记录时,它给出了一个错误。我不知道该怎么办。我正在使用grails 2.1.0。谁能帮我这个忙吗?!!!这是我的代码如下:

我的父域>>>

class AdtEntryMeeting {
    static mapping = {
        table('ADT_ENTRY_MEETING')
        version(false)
        entryMeetingDetails cascade: 'all'
    }
    String meetingVenue
    Date meetingDate = new Date()
    String meetingTime
    long CREATED_BY=0
    Date CREATED_DATE=new Date()
    long UPDATED_BY=0
    Date UPDATED_DATE=new Date()
    static hasMany = [entryMeetingDetails: AdtEntryMeetingDetails]
    static constraints = {
        meetingVenue(nullable: false, blank: false)
        meetingDate(nullable: false)
        meetingTime(nullable: false, blank: false)
        CREATED_BY(nullable:true)
        CREATED_DATE(nullable:true)
        UPDATED_BY(nullable: true)
        UPDATED_DATE(nullable: true)
    }
    String toString(){
        return id
    }
}

我的 child 域>>>
class AdtEntryMeetingDetails {
    static mapping = {
        table('ADT_ENTRY_MEETING_DETAILS')
        version(false)
    }
    AuditFirm auditPack
    AuditorDtl auditor
    String meetingSubject
    String responsiblePerson
    AdtEntryMeeting entryMeeting
    static constraints = {
        auditPack(nullable: false, blank: false)
        auditor(nullable: false, blank: false)
        meetingSubject(nullable: false, blank: false)
        responsiblePerson(nullable: false, blank: false)
        entryMeeting(nullable: false, blank: false)
    }
    String toString(){
        return auditPack
    }
}

我要删除的 Action >>>
if(params[isDelete + detailsCounter] == 'delete'){
                def entryMeetingDetailsDelete = AdtEntryMeetingDetails.get(Long.parseLong(params[entryMeetingDetailsId + detailsCounter]))
                entryMeetingDetailsDelete.delete()
            }else{
                def entryMeetingDetailsEdit = AdtEntryMeetingDetails.get(Long.parseLong(params[entryMeetingDetailsId + detailsCounter]))
                entryMeetingDetailsEdit.properties['auditPack'] = AuditFirm.get(Long.parseLong(params[auditPack + detailsCounter]))
                entryMeetingDetailsEdit.properties['auditor'] = AuditorDtl.get(Long.parseLong(params[auditor + detailsCounter]))
                entryMeetingDetailsEdit.properties['meetingSubject'] = params[meetingSubject + detailsCounter]
                entryMeetingDetailsEdit.properties['responsiblePerson'] = params[responsiblePerson + detailsCounter]
                adtEntryMeetingInstance.addToEntryMeetingDetails(entryMeetingDetailsEdit)
            }

我得到的错误>>>
deleted object would be re-saved by cascade (remove deleted object from associations)

最佳答案

您应该首先从父级删除引用,然后删除子级

例如

def entryMeetingDetailsDelete = AdtEntryMeetingDetails.get(Long.parseLong(params[entryMeetingDetailsId + detailsCounter]))

adtEntryMeetingInstance.removeFromAdtEntryMeetingDetails(entryMeetingDetailsDelete)
 entryMeetingDetailsDelete.delete()

关于oracle - 如何在Grails中删除子域行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28451994/

相关文章:

grails - grails复合ID无效

grails - Grails:在 Controller 中加载jdbcDriver

oracle - Devart dotConnect 适用于 Oracle 和企业库自定义提供商映射

java - 在一条语句中使用 getGenerateKeys() 从 java 向 Oracle 数据库中插入多行

oracle - 从 shell 脚本运行 sqlplus 时管理错误处理

sql - 我如何获得SQL中多列总和的最大值?

grails - 如何使用GORM以DRYish方式抽象出数据源选择

grails - grails 3 url和grails找不到 Controller

grails - 检测请求是否是来自另一个 Controller 操作的 "forward()"的正确方法是什么?

grails - 需要帮助来改善如何从我的应用程序的参数中保存对象