我有以下图表:
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"));
这失败了,因为休眠抱怨它无法在类 orderLineExtension 中找到 orderReferenceNumber,这是真的,因为它在 orderLineExtensionA 中。但是,我如何遍历扩展?我不能嵌套另一个 createCriteria,因为超类中没有对子类的引用。
任何帮助,将不胜感激。