我正在尝试在JPA实体之间实现继承关系。
@Entity
@Table(name="SUB", schema="CNTRCT")
@DiscriminatorColumn(name="KIND", discriminatorType=DiscriminatorType.INTEGER)
public abstract class Subscription {
...
}
@Entity(name="Lifetime")
@DiscriminatorValue("2")
public class LifetimeSubscription
extends Subscription {
...
}
}
@Entity(name="Trial")
@DiscriminatorValue("3")
public class TrialSubscription
extends Subscription {
...
}
我需要做的是有一个额外的实体来捕获其余部分,例如:
@Entity(name="WildCard")
@DiscriminatorValue(^[23])
public class WildSubscription
extends Subscription {
...
}
如果它与LifetimeSubscription或TrialSubscription不匹配,它将匹配WildSubscription。 如果你把它看作wild是超类的话,它实际上会更有意义,如果没有更合适的实现,那就使用超类。
任何人都知道这样做的方法吗?
谢谢!
答案 0 :(得分:1)
JPA API在此仅允许普通值,原因是:鉴别器值映射到SQL WHERE
:
SELECT ... WHERE kind = 1
如果你可以在这里指定正则表达式,它就不能转移到SQL,因为它不支持这样的结构。