在Spring 3应用程序中,控制器调用JpaCollectorManager并调用JpaCollectorInfoDao以获取由本机查询定义的列表。该查询调用2个使用sql和jpql的独立表,因为我需要使用未在jpql中实现的postgresql特性。当控制器试图文件列表中,我得到了以下错误消息:jpa调用readonly复合表,但获取“异常描述:[CollectorInfo]丢失描述符”
例外[EclipseLink的-6007(Eclipse持久服务 - 2.1.2.v20101206-r8635):org.eclipse.persistence.exceptions.QueryException 异常说明:缺少[CollectorInfo]的描述符。
查询:ReadAllQuery(referenceClass = CollectorInfo sql =“select distinct ON(col.collector_id,pst.process_source_type)col。*,pst.process_source_timestamp,pst.process_source_type from perform_schema.collector col join pst.collector_id上的perform_schema.process_set pst =通过col.collector_id,pst.process_source_type,pst.process_source_timestamp降序“)col.collector_id为了
控制器Java有以下电话:
List<CollectorInfo> ps = this.collectorInfoManager.getLatestCollectorInfo();
的JpaCollectorInfoManager.java有这样的:
public List<CollectorInfo> getLatestCollectorInfo()
{
return collectorInfoDao.getLatestCollectorInfo();
}
的JpaCollectorInfoDao.java:
@Override
@Transactional
public List<CollectorInfo> getLatestCollectorInfo() {
Query query = entityManager.createNativeQuery(("select distinct ON (col.collector_id," +
"pst.process_source_type) " +
"col.*," +
"pst.process_source_timestamp," +
"pst.process_source_type " +
"from perform_schema.collector col " +
"join perform_schema.process_set pst " +
"on pst.collector_id = col.collector_id " +
"order by col.collector_id, " +
"pst.process_source_type," +
"pst.process_source_timestamp desc "),
CollectorInfo.class);
return ((List<CollectorInfo>) query.getResultList());
}
的CollectorInfo类没有定义的@Entity。如果我设置了@Entity,那么它告诉我该表不能被解析(这是正确的,因为没有实际的表)。我尝试了各种排列方式,似乎无法使这根针线穿过。
是否有任何文档可能描述如何完整地完成此操作。我尝试了很多来自其他来源的建议,但这些解决方案似乎从来不合适。如果你能指出我正确的方向,一个完整的工作示例将会很有帮助。谢谢 – sldahlin 2011-03-07 16:41:48
感谢您的帮助。我希望有一些地方能够把它放在一起,但我用你的建议来完成工作。 – sldahlin 2011-03-14 15:39:55