【问题标题】:Get a list of discriminator values in a JPA and Hibernate inheritance tree获取 JPA 和 Hibernate 继承树中的鉴别器值列表
【发布时间】:2015-02-03 14:55:19
【问题描述】:

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

【问题讨论】:

    标签: java hibernate jpa inheritance orm


    【解决方案1】:

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

    @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)。

    【讨论】:

    • 我明白了。就我而言,我有一个 SQL 查询(不是 HQL),我必须在其中根据适当的鉴别器选择项目。我不想依赖硬编码这些,因为我可能会添加一个新孩子而忘记将其添加到 SQL 查询中。因此我的问题。
    猜你喜欢
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    相关资源
    最近更新 更多