2013-03-11 85 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?)在一个表中建立一个层次的时候,因为这会毁了你的一天,这很可能顺利你有排序的初始发行之后。 ..

相关问题