【发布时间】:2018-09-06 05:43:04
【问题描述】:
我是 groovy 和 grails 的新手。 Grails 2.5.1 版 Groovy 版本 2.4.5 我的问题是: 我在 customerController 中有一个更新方法。
客户控制器:
def update(){
def map = [:]
def customerId = params.id
def newCustomer = request.JSON
def customer = customerService.updateCustomer(customerId, newCustomer)
customer.validate()
if (customer== null) {
map['success'] = false
map['message'] = "Record not found"
return map
}
if (customer.save()) {
map['success'] = true
map['data'] = customer
} else {
validateErrorService.extractErrors(customer, map)
}
return map
}
在更新方法中我调用 customerService.updateCustomer
客户服务:
def updateCustomer(customerId, newCustomer){
def customer = Customer.get(customerId)
if (customer == null) {
return null
}
verifyLead(newCustomer.leadId)
customer.firstName = newCustomer.firstName
customer.lastName = newCustomer.lastName
if(!customer.hasErrors())
customer.save(flush:true)
return customer
}
然后我调用 verifyLead 方法来更新 Lead 域
def verifyLead(jsonLead, userId){
Long leadId = jsonLead.id as Long
Lead lead = Lead.get(leadId)
lead.status = "Proceed"
lead.save(flush: true)
}
先导域法 Lead.get(leadId) 返回旧的(缓存的)数据 所以当我保存时: 铅。保存(刷新:真) 它错误hibernate.object.staleException
【问题讨论】: