2017-04-07 67 views
0

我有使用另一個域類物業city這個領域類的所有表:如何保存不鎖定在Grails的

class Tracker 
{ 
    String name, value; 
    City city; 
    int hits; 
    Date date; 
} 

我插入或長作業過程中使用Tracker.save();更新值。

這是工作正常,除非當我想更新城市域類,而跟蹤器保存的東西。它說Lock wait timeout exceeded; try restarting transaction. Stacktrace follows: Message: Lock wait timeout exceeded; try restarting transaction

當我保存跟蹤器時,我沒有在城市進行更改,但我認爲hibernate認爲我也會鎖定城市域。

回答

0

嘗試tracker.save(flush: true) 或刷新會話的更新後:

def sessionFactory 
sessionFactory.currentSession.flush() 
0

試試這個

class Tracker 
{ 
    String name, value; 
    City city; 
    int hits; 
    Date date; 

    static mapping = { 
     city cascade: "delete" 
    } 
} 

這隻會cascade delete;這應該如您所說,在保存tracker時不要更改city

注:也看看cascade evict