我使用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.myPropName的简单更新实际上生产速度很慢。
在调试中,我看到在我的block.executeUpdate(“myPropName的更新”)之后,框架执行了以下操作:
选择所有已更新的块
以及LkrRuleCrit的选择,其中RULEID是该块的开,这在这种情况下不是必需的,也是可能的(我有一个特定用途的链接)
我如何禁用所有链接对象的刷新?
我玩过:
mapping {
cache true
}
而且懒惰没有任何作用...谢谢 !
JF
最佳答案
我对自己回答。
永远不要使用org.apache.commons.lang3.builder.ToStringBuilder来生成Domain类的toString方法,例如:
public String toString() {
return ToStringBuilder.reflectionToString(this)
}
这是我所有麻烦的原因。
关于grails - executeUpdate后刷新很多数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25012435/