【问题标题】:How do you query by Hibernate polymorphic criteria properties您如何通过 Hibernate 多态条件属性进行查询
【发布时间】:2014-02-03 17:10:40
【问题描述】:

假设

@Entity 
Class Animals { }

@Entity
@Inheritance( stragegy = InheritanceType.JOINED)
class Dogs extends Animals {
    private String furType;
}

@Entity
@Inheritance( stragegy = InheritanceType.JOINED)
class Cat extends Animals {
    private String furType;
}

我的数据库中的所有实体都是真实的类,我无法重新设计我们的数据库。

如何使用 DetactedCriteria 创建一个析取查询,告诉我所有“动物”,其中 furType= 'loud' 表示狗或 furType= 'soft' 表示猫? 抱歉,我没有设计类层次结构,所以我不对属性名称相同的事实负责,我无法重新设计它,因为还有其他子类的表不包含“furType”。

【问题讨论】:

  • 在 JPA 2.0 中,您有 TYPE(...) 构造,可用于仅选择继承树的特定子类。
  • 谢谢。你能扩展一下吗?我应该如何添加析取条件,以便我可以在每个条件中指定 TYPE(...)?

标签: hibernate polymorphism


【解决方案1】:

在 JPA 2.0 中,您可以使用 TYPE() 构造来完成这项工作。像这样(未选中)应该可以工作:

SELECT a 
  FROM Animals a 
  WHERE (TYPE(a) = Dogs AND a.furType = 'loud') OR 
        (TYPE(a) = Cat AND a.furType = 'soft')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多