Java 我可以使用现有列作为鉴别器列吗?
我正在看EclipseLink页面上的鉴别器列示例 有两个实体Java 我可以使用现有列作为鉴别器列吗?,java,jpa,eclipselink,Java,Jpa,Eclipselink,我正在看EclipseLink页面上的鉴别器列示例 有两个实体 @Entity @Table(name="PROJECT") @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="TYPE", discriminatorType=DiscriminatorType.STRING,length=20) @DiscriminatorValue("P") public class Project {
@Entity
@Table(name="PROJECT")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="TYPE", discriminatorType=DiscriminatorType.STRING,length=20)
@DiscriminatorValue("P")
public class Project {
@Id
protected BigInteger id;
protected String description;
}
@Entity
@DiscriminatorValue("L")
public class LargeProject extends Project {
protected BigInteger budget;
}
现在假设我的数据库中有两条记录
| ID | TYPE | DESCRIPTION | BUDGET |
|-----------|---------------|---------|
| 1 | P | Small Project | |
| 2 | L | Large Project | 10000 |
是否可以以某种方式删除类型表,而改用预算表?
对于这种情况,如果预算为空,则为Project,否则为LargeProject
JPA或EclipseLink能允许这样做吗?如果不能,有什么原因吗 我对此表示怀疑,如果你改变一个小项目的预算,使其超过阈值并成为一个大项目,那么它是否应该神奇地改变类型?@Tobb是的,我也会改变阈值类型,或者如果提供的映射不允许这样做,一切都会爆炸并抛出例外。答案如下: