select - 合并后DomainClass.getAll()无法正常工作

标签 select grails gorm

我试图更新数据库上的一行,并注意到一旦更新了该行,getAll就会停止正常工作。所有已更新的记录开始从getAll的结果中丢失。

例如,假设您有一个产品列表[product1,product2,product3]。如果我做类似product2.someProperty = 2的操作,然后再执行product2.merge(),则列表中将缺少第二个产品。因此,Products.getAll()的结果将为[product1,product3]。

(很抱歉,如果这是一个菜鸟问题)

如果我执行Product.get(idOfUpdatedProduct),它将正常工作。
我已经检查了数据库,并且合并正确地更新了数据。
问题似乎出在GetAll()方法上。
findAll()呈现相同的行为。

我的代码:

---action
def update() {
        Product product = productService.detail(params.id?.toLong())
        bindData(product, params)
        productService.updateProduct(product)
        redirect action: "show", params: [id: params.id]
}

---service
void updateProduct(product) {

        product.validate()
        StringBuilder str = new StringBuilder()
        product.errors.allErrors.each { str << "${it}" }

        if (!str.toString().isEmpty()) throw new Exception("Error: ${str.toString()}")

        product.merge(flush: true, failOnError: true)

    }

最佳答案

我发现了问题。

结果实际上是被返回的,但是由于某种原因,它被放置在列表的中间。

我通过对列表进行排序解决了。

关于select - 合并后DomainClass.getAll()无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57208900/

相关文章:

spring - Spring命令行JSON配置包含数组

linux - 如何设置 libcurl 以使用 poll()

sqlite - 按照另一列的顺序选择表的子集

sql - 分区上的 Row_number 并找到最大 rn 值

gradle - grails-无法使用Gradle发行版 'https://services.gradle.org/distributions/gradle-3.4.1-bin.zip'执行构建

MySQL通过liquibase建表时报错

PHP MySQL 从表中选择随机值

hibernate - 不要更新或删除数据库中的数据

grails - Grails-条件映射

grails - Grails/GORM是否可以在不执行N + 1查询的情况下过滤关联结果?