Grails:Domain.executeUpdate刷新会话吗?

时间:2015-08-24 18:15:50

标签: hibernate grails gorm

我使用grails 2.3.11和hibernate 3.6.10.16创建了一个应用程序,我有一个像这样的域类模型:

class Parent{
    String name
    static hasMany = [fooChildren: Foo]
}

class Foo{
    String name
    String attribute1
    String attribute2

    static belongsTo = [parent: Parent]

    def beforeDelete(){
        LogClass.executeUpdate "UPDATE LogClass SET action=:action WHERE objid=:objid", [action: "DELETE", objid: this.id]
    }
}

请注意,Foo类有一个beforeDelete方法,它对名为LogClass的类执行更新

问题是当我打电话时(当然是在服务方法内)

Parent p = Parent.get(2) //Parent has 1000 or more fooChildren
p.delete()

删除过程非常慢,我想知道每次调用LogClass.executeUpdate时是否刷新会话。

如果是这样,有没有办法控制会话刷新?

我试过了:

LogClass.executeUpdate "UPDATE LogClass SET action=:action WHERE objid=:objid", [action: "DELETE", objid: this.id], [flushMode: FlushMode.COMMIT]

但是当我这样做时,我收到以下错误

No signature of method: LogClass.executeUpdate() is applicable for argument types: (java.lang.String, java.util.LinkedHashMap, java.util.LinkedHashMap)

有没有办法控制executeUpdate方法的会话刷新?我知道会话刷新可以使用executeQuery或动态查找器来控制,但我还没有找到在executeUpdate中这样做的方法。

任何帮助将不胜感激。

P上。 S.我知道问题在于beforeDelete方法,因为当我删除它时,删除过程就像100倍快。

或者可能是级联行为?

0 个答案:

没有答案