EclipseLink 拒绝将 PostgreSQL 上的本机查询映射到实体

Posted

技术标签:

【中文标题】EclipseLink 拒绝将 PostgreSQL 上的本机查询映射到实体【英文标题】:EclipseLink refuses to map native query on PostgreSQL to entity 【发布时间】:2011-08-20 16:30:15 【问题描述】:

我有一个 JPA 实体类(其中之一),我可以在它上面运行 JPQL 查询,返回该实体没有任何问题。但是,当我尝试运行任何命名的本机查询来选择基础表上的所有字段时,而不是映射到实体并返回该实体类型的列表,我得到一个包含结果集的对象数组的java.util.Vector。也就是说,正在返回数据,但未映射到实体。 Java 的假泛型使情况变得更糟,因为错误在 EL 解析器中表现为NumberFormatException

我的查询调用代码:

return em.createNamedQuery("ClinicDoctor.findUnchangedByClinicSystemId",
                           ClinicDoctor.class)
    .setParameter(1, clinicSystemId)
    .getResultList();

当我将 EclipseLink 日志记录切换到 FINE 并运行 JPQL 查询时,选择的列名与我在本机查询中选择的列名完全匹配。

我错过了什么吗?是否有一些燃烧的箍让我应该跳过以使映射工作?

【问题讨论】:

【参考方案1】:

你不知道吗,在问了这个问题之后,我发现我只需要在我的 orm.xml 中的 <named-native-query/> 标记上设置 result-class 属性,它就起作用了。

【讨论】:

以上是关于EclipseLink 拒绝将 PostgreSQL 上的本机查询映射到实体的主要内容,如果未能解决你的问题,请参考以下文章

Postgresq9.6主从部署

Eclipselink NamedNativeQuery 将列名作为参数而不是值传递

Eclipselink 2.5 使用 Maven 生成元模型

EclipseLink - 向 Postgres 添加索引

JPA + EclipseLink+ HSQLDB 不创建表

使用 EclipseLink JPA 将 XML 类型存储到 PostgreSQL