2014-03-28 74 views
0

我正在處理一個需求。目前有一個搜索頁面,其中包含具有值的列表框(示例數據)1)員工和2)運動員。
對象層次結構(休眠豆) 人是具有兩種不同類 1)員工和 2)運動的人的基於 鑑別列
Person_Type(鑑別列)的實際對象。表上的聯盟每個類的層次結構

在搜索頁面上,如果用戶選擇任何一個列表框,將導致來自該子類的數據。

現在需要將兩個子類結果一起顯示,並通過在列表框中添加一個「Employee + Sports Person」值來完成。

問題的 1)兩個子類都有不同的結構 2)還有其他的標準與不同的屬性進行比較。

如何結合這兩個子類。 請幫我解決。 請注意:我試圖不使用基於查詢的聯盟。我認爲根據OOPS

+0

我不太明白你的問題:你有一個包含員工和運動員的列表,需要根據不同的標準對列表進行排序? – Thomas

+0

@Thomas,我想我混合了UI和Hibernate對象層次結構。列表框是具有兩個值的UI元素。基於選擇DAO在子類上運行。列表框中的值是Person_Type,它是一個判別器值。 – Kumar

回答

1

加載兩種類型的人不應該是一個問題。如果你的查詢可以訪問公共屬性,你可以做FROM Person p WHERE <whatever_person_criteria_you_have>

如果您的查詢需要使用EmployeeSportsPerson的特定屬性,那麼您可以執行2個查詢並將結果放入一個List<Person>

排序/顯示該列表取決於需要顯示或比較哪些數據。如果你必須比較不同的數據,你總是可以使用Comparator<Person>,它檢查對象的實際類,也可以使用一個包裝器,它可以訪問正確的屬性進行顯示。

+0

我執行了兩個Quires來獲得結果,因爲標準是特定於Sub Class的。但我的老闆真的問我一擊...或使用本機查詢(我不贊同那個) – Kumar

+0

@Kumar我會問你的老闆_Why_你必須使用兩個查詢。我寧願使用兩個簡單的查詢來處理一個更復雜的查詢,特別是如果你不得不退回到本地sql(我也不確定);)。如果單個查詢變得太複雜,爲了得到相同的結果,多個查詢甚至可以產生更好的性能,而且易於維護。 – Thomas

+0

是的,你是對的。我只是告訴他,但你知道老闆永遠是對的:-)。但實際上你的選擇是正確的。 – Kumar