Grails 2.5,之前删除无法访问一对多关系

问题描述 投票:0回答:1

此处使用Grails 2.5.6。我正在尝试在beforeDelete GORM事件中访问域类之外的一组字符串。我看到在数据库日志中已发布了针对此集合的删除,甚至在beforeDelete中到达断点之前。

我在域类的下面的println(strings)上收到NullPointerException。

我的测试域类看起来像

class DeleteTest {
    Integer id
    Set<String> stringSet
    String prop1
    String prop2

    static hasMany = [stringSet: String]

    static constraints = {
        prop1(maxSize: 20)
        prop2(maxSize: 20)
    }

    static mapping = {
        stringSet(joinTable: [column: 'delete_test_string_set', length: 15])
    }

    def beforeDelete() {
        withNewSession {
            Set<String> strings = this."stringSet"
            println(strings)
        }
    }
}

而且我已经做了一个像这样的测试控制器。

class DeleteTestController {

    def create() {
        DeleteTest test = null
        DeleteTest.withTransaction {
            test = new DeleteTest(
                    prop1: 'Test',
                    prop2: 'another test',
                    stringSet: ['str1', 'str2', 'str3']
            ).save()
        }

        render (test as JSON)
    }

    def delete() {
        DeleteTest test = DeleteTest.findByProp1('Test')
        DeleteTest.withTransaction {
            test.delete()
        }

        render(test as JSON)
    }
}

如何在beforeDelete事件中获取我的stringSet?

grails groovy gorm
1个回答
0
投票

我对Grails不太熟悉,但是我认为您两次声明了stringSet?一次进入Set stringSet,第二次进入静态hasMany = [stringSet:String]。

我将删除Set并尝试使用test.stringSet

© www.soinside.com 2019 - 2024. All rights reserved.