在我的JSF應用程序中,我有一段非常簡單的代碼。我希望用戶選擇在<h:selectOneMenu>
從收集一個值:<h:selectOneMenu>和從休眠狀態延遲加載
<h:selectOneMenu value="#{bean.value}">
<f:selectItems value="#{dao.valuesFromDb}" />
</h:selectOneMenu>
#{bean.value}
是Region
類型,#{dao.valuesFromDb}
回報Regions
名單。問題是,在bean中的Region
從休眠狀態延遲加載,它包裝在一些包裝中,類看起來像[email protected]
。
如果#{bean.value}
設置了某個值,則應該在頁面上預先選擇它,如果它在值列表中(#{dao.valuesFromDb}
)。問題是由equals
方法檢查,由於類型不同,返回false
。
如何解決這個問題?是否有可能強制JSF不使用equals
,但以某種方式自己處理這種比較?覆蓋equals
所以它忽略類型是恕我直言,真的很糟糕的主意,因爲它可以打破equals
對稱性。
我根本做不到。我們有許多依賴實體,並且我們剛剛超過了單個查詢中的連接限制。我們不得不改變一些急切的加載到懶惰。 – amorfis 2011-05-31 20:34:52
有趣的問題。 當我遇到類似的問題時(深圖),我已經分別關聯了相關對象並將其設置在目標bean上。我必須這樣做才能避免由於多個集合而導致的笛卡爾聯接。 – 2011-05-31 21:33:20
我們也有笛卡爾聯接的一些問題。你能分享一些解釋它的鏈接嗎? – amorfis 2011-06-01 07:34:39