此处使用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不太熟悉,但是我认为您两次声明了stringSet?一次进入Set stringSet,第二次进入静态hasMany = [stringSet:String]。
我将删除Set并尝试使用test.stringSet