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)
}
我发现了问题。
实际上返回了结果,但由于某种原因,它被放在了列表的中间。
我通过排序列表解决了。
我试图更新数据库中的一行,并注意到在更新该行后,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)
}
我发现了问题。
实际上返回了结果,但由于某种原因,它被放在了列表的中间。
我通过排序列表解决了。