當我使用條件查詢時, 結果包含懶惰 初始化對象的數組列表。也就是說,列表 具有處理器 org.codehaus.groovy.grails.orm.hibernate.proxy.GroovyAwareJavassistLazyInitializer的值。 這可以防止我做任何數組 操作(減號,刪除等)。 當我使用GORM方法時,我得到了實際對象類型列表 。 我怎麼能得到標準 查詢中的實際對象?代碼如下所示。懶惰地使用FindAllBy獲取對象
availableTypes = Type.withCriteria() {
'in'("roleFrom", from) 'in'("roleTo", to) }availableTypes(一個數組列表)具有 一個值,而不是實際的對象但 值與 GroovyAwareJavassistLazyInitializer
一個處理程序
availableTypes = Type.findByRoleFrom(from)
availableTypes(數組列表)具有 值類型
---------- ----------更新
我做進一步的故障排除,這是我發現了什麼。上面的描述可能是誤導性的,但我保留它以防萬一。
- 當第一次使用findAllBy時,我得到代理對象而不是實際的實例。然後,我通過ajax調用來調用方法,實際的實例被加載(任何與緩存加載有關的事情)。當我刷新頁面,它再次加載代理
def typeFrom = Type.findAllByParty(partyFrom)
- 有相同的方法,它總是返回實際情況另一種使用findAllBy的。
def relFrom = Relation.findAllByParty(partyFrom)
- 當比較的兩個類,類角色的屬性「方」是一個1米的關係的一部分。像
class Role { RoleType roleType
LocalDate validFrom
LocalDate validTo
static belongsTo = [party : Party ]
...
}
我知道,如果我不喜歡Party.findAll聲明(),角色實例將代理直到他們訪問。但是,當直接在類(角色)上使用gorm時,爲什麼我得到代理對象?
感謝您的幫助。
謝謝。
有什麼問題嗎?有很多關於你正在經歷的事情的陳述,但很難將它提煉成一個問題 – 2010-09-05 22:18:34
我面臨同樣的情況,數組操作失敗。如何避免獲取代理對象以查找結果? – msanjay 2013-01-24 11:41:00