public abstract class A<T> {
private int discriminator_value = -1;
private T value;
//...
}
public class One extends A<String> {
public One(){
setDiscriminatorValue(1);
}
//...
}
public class Two extends A<BigDecimal> {
public Two(){
setDiscriminatorValue(2);
}
//...
}
public class Three extends A<Date> {
public Three(){
setDiscriminatorValue(3);
}
//...
}
public class TheTargetSolution {
private Long info1;
private Long info2;
private Long info3;
private A targetPojo;
//...
}
表结构
THE_TARGET_SOLUTION_TABLE
- INFO_1 NUMBER(10)
- INFO_2 NUMBER(10)
- INFO_3 NUMBER(10)
- DISCRIM NUMBER(2)
- TEXT_A NVARCHAR2(200 BYTE)
- NUMBER_A NUMBER(10)
- DATE_A DATE
主要的是,我们需要在TargetSolution中有一个targetPojo,它是一个类的类型,而这个类没有映射(我们需要到实体的更多信息,并且没有选择使用多对多关系来实现这一点,在这种情况下,所有数据必须存储在一个表中),这是应用于鉴别器的类型的实例。
当DISCRIM列值为1时,targetPojo应按类型为1
当DISCRIM列值为2时,targetPojo应按类型2
当DISCRIM列值为3时,targetPojo应按类型为3
有什么建议吗?