我正在尝试实现 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 匹配。 如果您认为狂野是父类(super class),并且如果没有适合的更具体的实现,则使用父类(super class),那么它实际上更有意义。
有人知道这样做的方法吗?
谢谢!
最佳答案
JPA API 在此仅允许纯值,原因是:鉴别器值映射到 SQL WHERE
:
SELECT ... WHERE kind = 1
如果您可以在此处指定正则表达式,则它无法转移到 SQL,因为它不支持此类构造。
关于java - 使用 DiscriminatorColumn 和 'wild' DiscriminatorValue 进行 JPA 实体继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8612078/