She*_*ari 24 java inheritance hibernate jpa single-table-inheritance
我们有以下课程
@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 {
}
Run Code Online (Sandbox Code Playgroud)
还有这个
@Entity
@DiscriminatorValue("APS")
public class ApplicationProcessScheme extends ApplicationProcess {
}
Run Code Online (Sandbox Code Playgroud)
现在我需要在运行时知道它是否ApplicationProcess是DiscriminatorValue AP or APS.由于这是由jpa自动处理的,我无法获得此值.
我们正在调用一个带ApplicationProcess参数的方法,我想避免使用它instanceof来检查它是什么类型.如果我可以做类似的事情会更酷
applicationProcess.getApType().equals("AP");
Run Code Online (Sandbox Code Playgroud)
axt*_*avt 41
您可以将鉴别器映射为只读属性:
public class ApplicationProcess {
...
@Column(name = "apType", insertable = false, updatable = false)
private String apType;
}
Run Code Online (Sandbox Code Playgroud)
Wir*_*rus 39
我可以想象一些可能有用的情况,但是尽管你需要这个的原因,你可以在你的抽象类方法上创建
@Transient
public String getDiscriminatorValue(){
DiscriminatorValue val = this.getClass().getAnnotation( DiscriminatorValue.class );
return val == null ? null : val.value();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19842 次 |
| 最近记录: |