我很确定您不能将单个Java属性映射到三个不同的列。您将必须使用此:
@Entity
@Table(name = "ParameterValue")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "parameterType", discriminatorType = DiscriminatorType.STRING)
public abstract class ParameterValue<C> {
public abstract C getValue();
public abstract void setValue(C value);
}
@Entity
@DiscriminatorValue(value = "integer")
public class IntegerParameterValue extends ParameterValue<Integer> {
@Column(name = "intValue")
private Integer intValue;
@Override
public Integer getValue() {
return intValue;
}
@Override
public void setValue(Integer value) {
this.intValue = value;
}
}