Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何删除grails中的多个关系而不删除belongto_Java_Grails - Fatal编程技术网

Java 如何删除grails中的多个关系而不删除belongto

Java 如何删除grails中的多个关系而不删除belongto,java,grails,Java,Grails,我有以下几种情况 class User{ String name static constraints = { details nullable: true } static hasMany = [details: Details] } class Details{ String applicationID static constraints = { images nullable: true } static belongsTo = [user: User] static has

我有以下几种情况

class User{

String name
static constraints = {
details  nullable: true
}
 static hasMany = [details: Details]
}

class Details{
String applicationID
static constraints = {
images  nullable: true
}
static belongsTo = [user: User]
 static hasMany = [images: Images]
}
class Images{
String applicationImage
}
我有一个用户有许多详细信息,详细信息有许多图像。当我尝试删除用户时,请获取java.util.ConcurrentModificationException。如何删除用户

def deleteUser()
User user=User.get(params.id)
if(user.details) {
                Details details = Details.get(user.details.id)

                if(user.details.images) {
                    def detls= Details.findAllByDetails(details)
                    detls.each {
                        def image = it.images
                        if(image) {
                            Details detailsInstance = Details.get(it.id)
                            image.each { im ->
                                Image image1 = Image.get(im.id);
                                println(image1)
                                detailsInstance.removeFromImages(image1)
                                image1.delete(flush: true)
                            }
                            detailsInstance.save(flush: true, failOnError: true)
                        }
                    }
                }
user.delete(flush:true)
}

好的,首先,控制器中的代码与域类的代码不匹配(例如,域类的名称不匹配)。这可能就是我无法复制ConcurrentModificationException的原因

这取决于删除用户时要执行的操作。如果您只想删除用户及其详细信息,而不想删除图像,只需执行以下操作即可

def delete() {
    User user = User.get(params.id)
    user.delete(flush: true)
}
如果您还想删除他的图像,可以添加

static belongsTo = [detail: Detail]
转到Image类。在这种情况下,图像将通过级联删除(请参阅以获得更好的理解)

如果您想在某些情况下保留图像,可以这样做:

User user = User.get(params.id)

def images  = []

if (user) {
    user.details.each { detail ->
        detail.images.each { image ->
            images.add(image)
        }
    }

    user.delete(flush: true)
    images*.delete(flush: true)
}

@布山:你能用我的答案解决这个问题吗?