如何在JPA中使用一系列鉴别器值与策略" SINGLE_TABLE#34;?

时间:2014-07-21 08:13:51

标签: java jpa

我有一个名为“Banner”的父亲班,还有许多继承他的班级。 在鉴别器值中起始宽度相同的所有类具有相同的属性,然后我想使用相同的类来破坏它们

我的实际代码是这样的:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(discriminatorType = DiscriminatorType.INTEGER)
@DiscriminatorValue("20001")
public class IndexGallery extends Banner{

但我想要这样的东西,因为更通用:

....
@DiscriminatorRange("20000-29999")
public class Gallery extends Banner{
....
@DiscriminatorRange("30000-39999")
public class FooBanner extends Banner{

另一方面,可以创建一个自定义规则来描述?像一个正常的表达?

1 个答案:

答案 0 :(得分:0)

您可以使用@DiscriminatorFormula。使用人员示例:

@DiscriminatorFormula("case when age is null then 0 else age end")
public class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    @Column(name="person_id")
    private int personId;

    @Column(name="name")
    private String name;

    @Column(name="age")
    private Integer age;
}

Hibernate有一些关于它的文档here.