我想從數據庫加載一個父/子對象(類似於Java的DefaultMutableTreeNode對象)的圖形。在2之間有一個簡單的一對多關聯。圖的層次總數是已知的,所以我確切地知道調用'getChildren()'方法的次數。 我想要做的是不要爲實際葉節點調用此方法。通常該圖由幾個非葉節點和幾百個葉節點組成。如果我在hb映射中指定lazy=false
,我會從葉節點的子節點獲得數百個不必要的hb查詢,而我事先知道它們不是必需的(因爲我知道樹上的層級總數)。 不幸的是,我不能使用lazy=true
,並且只能循環到葉節點的父節點,因爲我正在斷開客戶機/服務器模型並使用beanlib加載整個對象圖(包含多個其他對象)。加載與休眠控制葉子父/子層次
所以我試圖找到一種方法來攔截加載的'兒童'集合,並指示HB停止時,它到達葉節點。有沒有辦法做到這一點? 我正在看2解決方案: 我想到的是這樣的:當我呼籲node.getChildren()
方法(在hb會話中),通常hb將執行一個數據庫查詢來獲取孩子:有沒有一種方法來攔截此調用只是沒有做到?我知道沒有孩子,所以我只是希望它快速失敗(實際上我不想做它)。
謝謝 科斯塔斯
你會把孩子們的收藏映射爲懶惰嗎? – meriton
是的。如果你將某些東西映射爲渴望的東西,它總是會被Hibernate加載。 –
這不會解決問題:Hibernate仍然會打到數據庫並嘗試加載集合。問題是停止休眠從而這樣做的葉節點。 @meriton:懶惰或沒有關係,如果我得到一個解決方案;如果我找到一種方法來'攔截'db的調用並'停止'它。 – Costas