[英]How to save without locking all the tables on grails
我有这个域类正在使用另一个域类作为property city
:
class Tracker
{
String name, value;
City city;
int hits;
Date date;
}
我使用Tracker.save();
插入或更新值Tracker.save();
在漫长的工作过程中。
这很好用,除非当我想在跟踪器保存某些内容时更新City Domain类中的内容时。 并说Lock wait timeout exceeded; try restarting transaction. Stacktrace follows: Message: Lock wait timeout exceeded; try restarting transaction
了“ Lock wait timeout exceeded; try restarting transaction. Stacktrace follows: Message: Lock wait timeout exceeded; try restarting transaction
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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.