Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
JPA@Inheritation(strategy=InheritanceType.JOINED):同一类的不同鉴别器值_Inheritance_Jpa - Fatal编程技术网

JPA@Inheritation(strategy=InheritanceType.JOINED):同一类的不同鉴别器值

JPA@Inheritation(strategy=InheritanceType.JOINED):同一类的不同鉴别器值,inheritance,jpa,Inheritance,Jpa,是否可以将两个不同的鉴别器值映射到同一个具体的java类 大概是这样的: @DiscriminatorValue("4") @DiscriminatorValue("5") public class CartaImpl extends RapportoImpl implements Carta, Cloneable { 另一个问题:当没有为不引发此异常的指示符字段值提供类时,是否可能有默认实现 Missing class for indicator field value 为什么使用两个不

是否可以将两个不同的鉴别器值映射到同一个具体的java类

大概是这样的:

@DiscriminatorValue("4")
@DiscriminatorValue("5")
public class CartaImpl extends RapportoImpl implements Carta, Cloneable {
另一个问题:当没有为不引发此异常的指示符字段值提供类时,是否可能有默认实现

Missing class for indicator field value 

为什么使用两个不同的值来表示同一件事?为什么要使用毫无意义的值?我将修复数据,而不是尝试映射无效数据:

update rapporto set discriminator = '4' where discriminator = '5';
update rapporto set discriminator = '0' where discriminator not in ('0,', '1', '2', '3', '4');

(假设0是默认实体的鉴别器,0、1、2、3、4是有效的鉴别器值)。

没有意义。如果该类的实例在DB中有两个可能的鉴别器值,则在同一继承树中创建两个不同的类,鉴别器的每个值一个,这在JPA中没有定义,但一些提供程序确实支持更复杂的指示符

如果使用EclipseLink,则可以使用类提取器定义自己的代码,以确定每行要使用的类


请参阅,

,因为我使用的是lagacy数据库。我无法修复数据,但只能作为从属进程工作。我认为唯一的方法是使用@MappedSuperclass来保存实现和相关的子类。现在,超级类持有实现,而子类只定义自己的鉴别器值。