当我意识到无法访问数据库中存储的值时,我在Grails 3.3中编写了具有多个异步GORM调用的集成测试。我编写了以下测试以了解发生了什么。
void "test something"() {
given:
def instance = new ExampleDomain(aStringField: "testval").save(flush:true)
when:
def promise = ExampleDomain.async.task {
ExampleDomain.get(instance.id).aStringField
}
then:
promise.get() == "testval"
}
我的网域类别
class ExampleDomain implements AsyncEntity<ExampleDomain> {
String aStringField
static constraints = {}
}
build.gradle配置
compile "org.grails:grails-datastore-gorm-async:6.1.6.RELEASE"
知道出了什么问题吗?我希望在执行异步调用期间可以访问数据存储。
最佳答案
给定的块很可能在尚未提交的事务中。没有看到完整的测试类,这是不可能知道的,但是很可能您具有@Rollback
批注。
解决方法是删除注释,并将用于保存域的逻辑放在单独的事务方法中。然后,您将负责清理所有插入的数据。