【发布时间】:2017-03-16 16:00:26
【问题描述】:
假设我有一个名为 Vehicle 的超类,如下所示:
@Entity
public class Vehicle {
private LocalDateTime dateTimeOfCreation;
}
而且,假设我有一个名为 Car 的子类,如下所示:
@Entity
public class Car extends Vehicle{
}
而且,我有一个我想选择在某个日期之后创建的所有汽车。而且,虽然dateTimeOfCreation 字段在超类中,但我需要能够查询子类,因为我不容易解释。
我试过这个查询:SELECT c from Car c WHERE c.dateTimeOfCreation > :dateTime
但是,我收到 ORA-00904: Invalid Identifier 错误,这在某种程度上是合乎逻辑的,因为类 car 没有该字段和 Cars。另外,我使用的是 JOINED INHERITANCE,所以每个类都有它的表,dateTimeOfCreation 存储在 Vehicle 表中。这是我无法改变的,原因又很难解释。
编辑:我给出的代码只是一个例子。事实上。 Vehicle 是我不应该更改的框架的一部分,因此它已经具有 @Entity 注释。
Car 是我实现的一个类,它也需要是一个实体。但是,该框架会跟踪创建时间,我需要在查询中使用该信息。但是,我不能直接查询 Vehicle,因为我只需要汽车,而不是卡车、自行车等。
【问题讨论】:
标签: java jpa inheritance jpql