Hibernate 如何保存而不锁定grails上的所有表
我有一个域类,它使用另一个域类作为属性Hibernate 如何保存而不锁定grails上的所有表,hibernate,grails,gorm,cascade,Hibernate,Grails,Gorm,Cascade,我有一个域类,它使用另一个域类作为属性city: class Tracker { String name, value; City city; int hits; Date date; } 我使用Tracker.save()插入或更新值在长作业过程中 这是正常的,除了当我想在城市域类上更新一些东西,而跟踪器正在保存一些东西。它表示超过了锁等待超时;尝试重新启动事务。跟踪如下: 消息:超过锁定等待超时;尝试重新启动事务 保存tracker时,我不会在city中进行
city
:
class Tracker
{
String name, value;
City city;
int hits;
Date date;
}
我使用Tracker.save()插入或更新值代码>在长作业过程中
这是正常的,除了当我想在城市域类上更新一些东西,而跟踪器正在保存一些东西。它表示超过了锁等待超时;尝试重新启动事务。跟踪如下:
消息:超过锁定等待超时;尝试重新启动事务
保存tracker时,我不会在city中进行更改,但我认为hibernate也会这样做,并锁定city域。尝试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"
}
}
这将只级联删除;这应该可以做到,正如您所说,在保存跟踪器
时,您不会对城市
进行更改
注意:还可以查看级联逐出