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

DomainClass.getAll() not working correctly after merge

我试图更新数据库中的一行,并注意到在更新该行后,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)

    }

我发现了问题。

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

我通过排序列表解决了。