查询映射的超类或等价

时间:2014-04-20 02:05:14

标签: java java-ee inheritance jpa jpql

我有三个类,它们是抽象超类汽车的子类。我正在使用单表继承模型和汽车类@MappedSuperclass。子类是Car,Truck和Van。

我想查询汽车类,但返回了不同的子类。我写了几个查询并做了一些研究,但似乎无法查询MappedSuperclasses。我也试过做NativeSqlQueries,但我似乎无法弄清楚如何指定多个ResultSetMappings。

无论如何要做到这一点?

1 个答案:

答案 0 :(得分:0)

您不能在查询中使用mapped-superclass。如果要在查询中使用Automobile,请不要将其标记为mapped-superclass,而是将其标记为实体。

以下是来自JPA 2.0 Spec,第二段与您的案例相关 -

  

2.11.2映射超类

     

实体可以从提供持久实体状态和映射信息的超类继承,但它本身不是实体。通常,这种映射超类的目的是定义多个实体类共有的状态和映射信息。

     

与实体不同,映射的超类不可查询,不能作为参数传递给EntityManager或Query操作。映射的超类定义的持久关系必须   是单向的。