2013-06-05 70 views
2

的Grails 2.2.1LazyInitializationException中Grails中

我的簡單域:

class Article{ 
    SortedSet<Photo> photoGallery 

    //helper method 
    Photo getMainPhoto(){ 
     Photo mainPhoto = photoGallery.find{it.mainPhoto} 
     return mainPhoto 
    } 
} 

的一個一對多的照相館是獲取懶洋洋地

我從一個.gsp視圖調用getMainPhoto方法。 問題是,有時(並非總是)我試圖從懶惰一對多照片庫中獲取主照片時出現LazyInitializationException錯誤。

爲什麼偶爾會發生這種情況,而不是每次我調用該方法?這是正常的嗎?我怎樣才能解決這個問題,而不是讓人們熱切地提取關係?

感謝

回答

0

不知道,但我曾經得到同樣的錯誤,當我試圖在併發執行訪問其是有一個未來幾年內嵌套的對象的對象,所以有時因懶惰,所有的嵌套域對象在使用它們之前沒有被抓取。

問題可以通過在視圖上使用它之前訪問塊上的相同屬性來避免。

所以如果你只添加,那麼它應該得到加載行

Photo mainPhoto = photoGallery.find{it.mainPhoto} 

低於print語句什麼的。

我不知道,但我想如果你添加像這樣:

Photo mainPhoto = photoGallery.find{it.mainPhoto} 
println("mainPhoto=${mainPhoto}") 

那麼就應該使GSP頁面上。

0

你給出的代碼是你如何定義你的域類,Article?你甚至可以使用像SortedSet這樣的東西嗎?如果您希望Grails能夠正確處理所有事情,我認爲您需要在所有一對多情況下使用hasMany

另一件可能有所幫助的事情:看看Article是否有自動生成的輔助方法,如getPhotoGallery。也就是說,不要直接引用photoGallery

如果有任何幫助,請告訴我們。我很困惑自己。

相關問題