2013-03-11 84 views
0

我正在嘗試從名爲STUDENT_ADDRESS的表中創建Student和Address對象,該表定義如下。有沒有辦法在Hibernate中只使用一個表創建OneToMany關係?

Table Name: STUDENT_ADDRESS 
Columns: 
STUDENT_ID 
STUDENT_NAME 
STUDENT_END_DATE 
STUDENT_ADDRESS_END_DATE 
ADDRESS_ID 
ADDRESS_VALUE 
ADDRESS_END_DATE 

我知道這是可以創建的效率最低的表。但改變桌子結構是一場艱難的戰鬥,我很可能會失敗。

我想要做的是創建一個具有一組Address對象的Student對象,並且地址對象可以基於STUDENT_ADDRESS_END_DATEADDRESS_END_DATE被過濾掉。

我希望這是有道理的。在此先感謝您的幫助。 :)

+1

*請*不要這樣做。爭取你必須的任何戰鬥,並使表格正常化。在表中存儲多個記錄只是爲了存儲不同的地址是不好的設計,並且會是一個***的噩夢***來維護。 – Perception 2013-03-11 22:49:13

回答

0

可以在休眠的食譜看這件事「災難即將發生」 :)

但是,如果你真的必須那麼也許與鑑別嘗試下?

我不確定這是否會做一對多的關係。

@Entity 
@Table(name = "OBJECT") 
@Inheritance(strategy=InheritanceType.SINGLE_TABLE) 
@DiscriminatorColumn( 
    name="OBJ_TYPE", 
    discriminatorType=DiscriminatorType.STRING, 
    length=1 
) 
@DiscriminatorValue("c") 

public class ObjOne { 
... 
} 

@DiscriminatorValue("b") 
public class ObjTwo { 
.... 
} 

被改變警惕創建+ 1個問題(見What is SELECT N+1?)在一個表中建立一個層次的時候,因爲這會毀了你的一天,這很可能順利你有排序的初始發行之後。 ..

相關問題