在executeUpdate之后刷新大量数据

时间:2014-07-29 09:46:58

标签: grails load

我使用grails 2.2.3并且我的grails应用程序出现问题。

我的课程很少:

class Block {
[...]
    String myPropName 
    Rule rule
[...]
    static mapping = {
[...]
    rulecolumn: 'RULEID'
[...]
}
class Rule {
[...]
    static hasMany = [lkrRuleCrit: LkrRuleCrit]
[...]
    static mapping = {
[...]
        lkrRuleCrit joinTable: [name: 'LK_RULE_CRIT', key: 'RULEID' ]
[...]
}
class LkrRuleCrit implements Serializable{
    Rule rule   
    String  CriteriaValue   
    static mapping = {          
        id composite: ['RuleID', 'CriteriaType']        
        table 'LkrRuleCrit_T'       
        Rule column: 'RULEID' ,lazy: true
        CriteriaType column: 'CRITERIA_TYPE_ID'  ,lazy: true
    }
}
  • Block => N行
  • 规则=> 100 000 000行
  • LkrRuleCrit =>规则x 100行

由于数据量的原因,Block.myPropName的简单更新在生产中确实很慢。

在调试中我看到在我的block.executeUpdate(“myPropName的更新”)框架之后:

选择所有Block更新 和一个LkrRuleCrit的选择,其中RULEID是块的on,在这种情况下不是必需的和可能的(我有一个特定用途的链接)

我怎么能禁用所有链接对象的刷新?

我玩过哪个:

mapping { cache true } 而懒惰没有任何影响...

谢谢!

JF

1 个答案:

答案 0 :(得分:0)

我回答自己。

永远不要使用org.apache.commons.lang3.builder.ToStringBuilder来生成Domain类的toString方法,如:

public String toString() {
    return ToStringBuilder.reflectionToString(this)
}

这是我所有麻烦的原因。