有没有办法在Hibernate中只使用一个表创建一个OneToMany关系?

时间:2013-03-11 22:36:50

标签: java hibernate

我正在尝试从名为STUDENT_ADDRESS的表创建Student和Address对象,该表定义如下。

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 个答案:

答案 0 :(得分:0)

您可以在“等待发生的灾难”下的Hibernate配方中查看:)

然而,如果你真的必须那么可能尝试与鉴别器?

我不确定这是否可以做一对多的关系。

@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? ),因为这会破坏您的一天,这可能会在您获得初始问题排序......