当我意识到无法访问数据库中存储的值时,我在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批注。

解决方法是删除注释,并将用于保存域的逻辑放在单独的事务方法中。然后,您将负责清理所有插入的数据。

09-11 13:44