Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以使用现有列作为鉴别器列吗?_Java_Jpa_Eclipselink - Fatal编程技术网

Java 我可以使用现有列作为鉴别器列吗?

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 {

我正在看EclipseLink页面上的鉴别器列示例

有两个实体

@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是的,我也会改变阈值类型,或者如果提供的映射不允许这样做,一切都会爆炸并抛出例外。答案如下: