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

时间:2011-10-10 15:06:24

标签: inheritance jpa

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

这样的事情:

@DiscriminatorValue("4")
@DiscriminatorValue("5")
public class CartaImpl extends RapportoImpl implements Carta, Cloneable {

另一个问题:如果没有为指标字段值提供类而不提出此异常,是否可以使用默认实现?

Missing class for indicator field value 

3 个答案:

答案 0 :(得分:1)

没有任何意义。如果该类的实例在DB中具有两个可能的鉴别器值,则在同一继承树中创建两个不同的类,每个鉴别器的值一个

答案 1 :(得分:0)

为什么使用两个不同的值来表示相同的内容?为什么使用没有任何意义的价值?我会修复数据,而不是尝试映射无效数据:

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是有效的鉴别器值)。

答案 2 :(得分:0)

这在JPA中没有定义,但有些提供商确实支持更复杂的指标。

如果使用EclipseLink,您可以使用ClassExtractor定义自己的代码,以确定每行使用的Class。

请参阅http://en.wikibooks.org/wiki/Java_Persistence/Inheritance#No_class_discriminator_column