繁体   English   中英

如何在不锁定所有表的情况下进行保存

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM