如何在不将所有表锁定在圣杯上的情况下保存



我有这个域类,它使用另一个域类作为属性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

相关内容

  • 没有找到相关文章

最新更新