2009-11-20 40 views
-1

我有一個關於Java Hibernate的痛苦問題。 我在我的模型中有我自己的POJO類,並且我希望將該類的實例的查詢提交到我的關係數據庫的表中。問題是,我想向不同的表提交幾個不同的查詢。例如: 我有一個公共汽車班,代表巴士。我有一個BusesOnTheLine表,一個BusesWaitingForRepair表。現在有時候我必須在BusesOnTheLine表中添加一個新行,有時候會添加到另一行。每張桌子都有自己的方案,所以我沒有(雙射)一對一的對應關係。 我想應該有一個像.NET一樣的服務類,它可能對每個使用HQL(Hibernate Query Langugage)的查詢都有一個方法,但我無法找到它。 :( 任何有關解決方案的想法Java Hibernate服務類

回答

2

聽起來像是在你的數據庫給我一個非常標準化的設計,它不處於休眠

我同意一個總線對象中的缺陷;?。我同意總線表。但爲什麼你有幾個表看起來像不同狀態的總線?

我建議一個BUS_STATUS表的行像「ON_THE_LINE」,「WAITING_FOR_REPAIR」和BUS表中的外鍵指向主鍵

現在你的公共汽車類有一個單一的狀態,與它的狀態對象進行一對一的映射,並且你全部設置好了。

+0

是的,但事情是,我必須存儲其他東西,如時間戳輸入行,等等...... 你說,我應該只生成總線的子類,並使用它們來存儲和檢索數據從DB?我對創建這些子類的實例以將數據保存到數據庫的想法不滿意。我希望在Hibernate中有一個類服務類的解決方案,我可以將一個總線傳遞給它的一個方法,並且該方法爲我執行數據庫查詢。 – gmate 2009-11-20 11:32:51

+0

不,我沒有說任何子類。一類巴士,其狀態可以隨時間變化。如果您需要維護特定總線的狀態歷史記錄,則創建一個具有值和時間戳的狀態對象,並讓它與總線具有1:m的關係。 Hibernate是關於持久性的;服務是一個單獨的事情,海事組織。 – duffymo 2009-11-21 03:37:52

0

如果你有幾個表都代表不同狀態的總線,那麼你可能需要使用每個子類策略的表尋找一個繼承。也就是說,總線的每個狀態都可能是總線的一個子類,然後當您保存總線時,休眠會爲您插入右側表格。當查詢你可以查詢公共汽車時,你可以得到所有的公交車,或者你可以查詢BussesOnTheLine,在這種情況下只能得到這些公交車。