条件查询在连接的子类问题上有限制

时间:2010-01-26 13:17:14

标签: java hibernate inheritance criteria detachedcriteria

我有以下图表:

OrderLine
    OrderLineExtension
        OrderLineExtensionA
        OrderLineExtensionB
        OrderLineExtensionC

OrderLine包含一组OrderLineExtension OrderLineExtension定义为:@Inheritance(strategy = InheritanceType.JOINED)并标记为实体并且是抽象的

在db中为层次结构中的每个类创建一个表。

我正在尝试执行一个查询,其中OrderLine上的项目名称是“item”,但OrderLineExtensionA中的orderReferenceNumber为“orderRef”。

我不确定如何从OrderLine遍历到OrderLineExtensionA,因为没有从OrderLineExtension到OrderLineExtensionA的java引用。

我到目前为止得到了这个当然不起作用。

filter=DetachedCriteria.forClass(OrderLine.class);
    .add(Restrictions.eq("item", "item"));
    .createCriteria("orderLineExtension")
        .add(Restrictions.eq("orderReferenceNumber", "orderRef"));

这失败了,因为hibernate抱怨它无法在class orderLineExtension中找到orderReferenceNumber,这是正确的,因为它在orderLineExtensionA中。但是,我如何遍历扩展?我不能嵌套另一个createCriteria,因为超类中没有引用子类。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

哎呀,别担心。这个问题被抛出,因为我没有意识到一个同事在每个连接的子类中创建了相同的字段。 Hibernate将只是第一个子类来加载属性。这就是为什么我得到了错误的实例。

现在我们已将它们重命名,一切正常。不过我的脑袋已经刮了一会儿。