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 上的本机查询映射到实体的主要内容,如果未能解决你的问题,请参考以下文章
Eclipselink NamedNativeQuery 将列名作为参数而不是值传递
Eclipselink 2.5 使用 Maven 生成元模型