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

我想查询汽车类,但返回了不同的子类。 我已经编写了一些查询并进行了一些研究,但似乎无法针对MappedSuperclasses进行查询。 我也尝试过执行NativeSqlQueries,但似乎无法弄清楚如何指定多个ResultSetMappings。

反正有做到这一点吗?

===============>>#1 票数:0 已采纳

您不能在查询中使用映射超类。 如果要在查询中使用Automobile ,请不要将其标记为映射超类,而应将其标记为实体。

以下是来自JPA 2.0规范的内容 ,第二段与您的案例有关-

2.11.2映射的超类

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

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

  ask by Jake B translate from so

未解决问题?本站智能推荐:

2回复

在JPA中使用JQPL查询获取超类字段值

假设我有一个名为Vehicle的超类,如下所示: 而且,假设我有一个名为Car的子类,如下所示: 而且,我有一个我想选择在某个日期之后创建的所有汽车。 而且,尽管dateTimeOfCreation字段在超类中,但我仍需要能够查询子类,原因是我不容易理解。 我尝试了以下查
1回复

JPQl查询错误

查询执行错误:参数值[1]与预期的类型[com.autosoft.fortune.model.Student(n / a)]不匹配我的查询在我的类属性之上和之后,我该怎么办
1回复

JPA查询优化

我们有一个在GlassFish 4.1上运行的JavaEE Web应用程序。 它在少量数据的情况下表现良好,但是现在数据变得越来越多。 结果是像加载文档这样的简单请求大约要花1分钟的时间,因为它不必要地加载了几乎整个数据库。 这些是实体: 文件实体: 项目实体:
1回复

我的Native查询和JPQL(JPA)的结果差异

我的原生查询是(这是工作): 原生查询的结果是:deck = 1和preDeck = 0(这是我想要的) 但在JPQL中它不会发生: 结果是:deck = 1和predeck = 1 解决办法是什么? RGDS
1回复

如何在EclipseLink JPQL查询中指定架构?

当我执行下面的查询时,此后会出现异常。 如何在JPQL查询中指定架构。 我的数据库架构是公共的。 该数据库是PostgreSQL。 这是我的查询: 这是例外:
1回复

通过避免JOIN查找表来进行JPA查询优化?

想象一下表emp : 和一个表部门 : emp.dept_code引用dept.code作为一个ForeignKey。 这些表映射到JPA实体,ForeignKey被建模为关联: 鉴于以下数据: 我想编写一个JPA查询,返回支持部门中的所有Emloyees。
3回复

在jpql查询中传递参数select

我有一个jpql查询在select子句中实例化一个Java对象 我放了3个参数,所以我可以在构造函数中传递它,但出现此错误 我认为不可能将参数放在select子句中,所以任何人都没有想法,构造方法如下:
2回复

JPA / JPQL查询的where子句中的字符串列表标识

说我有一个@Entity喜欢 我想查询与给定列表完全匹配的C实例。 (我知道这是顺序敏感的,我可以接受。)我正在使用EclipseLink并通过JPQL查询。 我尝试了明显的方法: 当我尝试使用getResultList()执行查询时,此操作将失败。 错误是java.s
1回复

需要查询以检查数据库(Java Persistence API)中是否已存在电子邮件

我试图找出这种使用JPQL来验证数据库中是否已经存在电子邮件的方法的问题,由于某种原因,该电子邮件不起作用。 有人可以看看吗? 还是给另一个替代查询更简单? 这是控制台输出的一部分: 由以下原因引起:异常[EclipseLink-8024](Eclipse Persiste
1回复

JPQL查询实体内部的字符串列表

我正在将Java EE7与GlassFish 4.1 Server一起使用,以构建一个基本上可以在其中发布Ideas的系统,并且每个Idea都可以具有标签。 我已将实体Idea声明为: 阅读JPA之后:查询我尝试通过Tag通过以下方式找到的实体内的可嵌入列表 : 但是我收到了T