java - 获取 JPA 和 Hibernate 继承树中的鉴别器值列表

标签 java hibernate jpa inheritance orm

Hibernate 中是否有实用程序可以快速获取继承树中存在的鉴别器值列表?避免在某些 SQL 查询中对其进行硬编码会很有用。

最佳答案

您可以将鉴别器列映射到继承模型基类的一个属性:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "discriminator", discriminatorType = DiscriminatorType.STRING, length = 255)
public class BaseEntity { 

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

}

更新

在 HQL 查询中,您还可以使用 class 指令:

select e.class, e.id from YourEntity e

对于 SQL 查询,您只能使用预定义的鉴别器列。没有任何实用程序可以帮助您解决此问题。 Hibernate 实用程序针对实体查询(HQL 或 Criteria)。

关于java - 获取 JPA 和 Hibernate 继承树中的鉴别器值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27315865/

相关文章:

java - 线程是否根据各自的优先级编号工作?

java - 使用 "org.apache.solr.common.util.SimpleOrderedMap cannot be cast to java.util.Map"处理程序时出现 solrj "/suggest"异常

java - JPA/hibernate : Value must be a constant

java - Hibernate 在异步 EJB 应用程序中的奇怪行为。竞赛条件?

java - 什么是 “reached end of file while parsing”错误,以后如何避免该错误?

mysql - 数据类型 varchar 和 ntext 在 add 运算符中与 hibernate 不兼容

java - 使用函数输入 Hibernate 参数

java - 关于 Hibernate 中 Clob 对象的问题

hibernate - Spring Data + Hibernate 查询缓存不起作用

java - JVM 实例