一尘不染

如何在运行时获取DiscriminatorValue

hibernate

我们有以下课程

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) // optional annotation as this is default
@DiscriminatorColumn(name = "apType", discriminatorType = DiscriminatorType.STRING, length = 255)
@DiscriminatorValue("AP")
public class ApplicationProcess {
}

和这个

@Entity
@DiscriminatorValue("APS")
public class ApplicationProcessScheme extends ApplicationProcess {
}

现在,我需要在运行时知道ApplicationProcessis是否为DiscriminatorValue AP or APS。由于这是jpa自动处理的,因此我无法获取此值。

我们正在调用一个带有ApplicationProcessas参数的方法,我想避免使用它instanceof来检查它是什么类型。如果我可以做些类似的事情会更酷

applicationProcess.getApType().equals("AP");

阅读 274

收藏
2020-06-20

共1个答案

一尘不染

您可以将鉴别符映射为只读属性:

public class ApplicationProcess {

    ...

    @Column(name = "apType", insertable = false, updatable = false)
    private String apType;

}
2020-06-20