我有这个域类,它使用另一个域类作为属性city
:
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
保存跟踪器时,我不会对城市进行更改,但我认为休眠认为我这样做并锁定了城市域。
尝试tracker.save(flush: true)
或在更新后刷新会话:
def sessionFactory
sessionFactory.currentSession.flush()
试试这个
class Tracker
{
String name, value;
City city;
int hits;
Date date;
static mapping = {
city cascade: "delete"
}
}
这只会cascade delete
; 正如您所说,这应该可以,您在保存tracker
时不会更改city
。
注意:另请查看cascade evict
。