我有以下問題:Grails/Groovy不會持久更改對象的集合
我的對象路由包含路由點列表。當我改變這個列表時,更改的列表被保存。但是,當下一個方法訪問列表時,它看起來像是改變了。我規定某種事務回滾,b/c在修改方法結束時,我通過從數據庫中加載它來訪問列表,並且它仍然具有正確(更改)的大小。下面的代碼:
首先改變方法:
def removeStationFromRoute(station){
def driver = Driver.get(Integer.valueOf(requestAccessService.getParams().userId))
def route = driver.routes.find{
it.routeDate == new Date().clearTime()
}
def rp = Routepoint.findByStation(station)
route.routepoints.remove(rp)
def newRoute = driver.routes.find{ it.routeDate == new Date().clearTime()}
println 'new route size: ' + newRoute.routepoints.size()
def newRoute2 = Route.get(route.id)
println 'new route from db size: ' + newRoute2.routepoints.size()
}
同時打印返回一個大小爲5,這是正確的。該方法進行之後,執行該方法:
def getDriverRoute(){
def driver = User.get(Long.valueOf(params.userId))
def route = driver.routes.find{ it.routeDate == new Date().clearTime()}
println 'serialized route size: ' + route.routepoints.size()
def routeString = jobService.serializeRoute(route)
log.info('Route with ' + route.routepoints.size() + " stations serialized for User " + driver.encodeAsHTML())
render routeString
}
它打印爲6個,彷彿沒有變化發生在列表中。我已經嘗試在「removeStationFromRoute」列表中進行更改後保存驅動程序,路由和路由點,並檢查三個對象是否有錯誤。沒有幫助。
感謝您的任何想法做什麼!
的是,在第二個方法一個錯字朝向駕駛者User.get代替Driver.get? –
Nope,Driver是User的一個子類,但是我在兩種方法中都將其更改爲Driver.get(),但它仍然不起作用 – olkoza