2011-03-13 130 views
0

這是我的問題。我有3個班,一個代表資金流的父母班。兩個子類用於收入,另一個用於支出。事情是我的子類覆蓋行爲,而不是狀態。所以在數據庫中,我應該只有一個帶有類型列的表。我可以通過加入戰略來實現這一點,但收入和支出表仍然是正確的。無論如何映射這個?JPA繼承建模問題

基本上我的想法是,只有一個表表示具有type屬性的貨幣流,因此orm知道是否要實例化一個「收入」或「費用」。我想這樣做是因爲差異在於行爲而不是狀態,因此收入和支出的表除了密鑰以外不會有任何列。

我可以創建一個類,並有一個類型屬性,但它會導致非常髒的代碼,我寧願使用多態性。加上我的代碼看起來非常乾淨。

回答

2

聽起來像你所描述的只是Single Table inheritance type。一切都存儲在一張桌子上。您只需指定一個Discriminator Column,JPA將根據該值確定要使用哪種類型的對象。 Discriminator Column的java文檔中的示例實現了您想要執行的操作。

0

這一切對我來說都很合理。一個問題是數據庫操作是否因收入和支出而有所不同。另一個是模型是否有望超出現在的情況。