2011-03-06 53 views
2

在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,那么它告诉我该表不能被解析(这是正确的,因为没有实际的表)。我尝试了各种排列方式,似乎无法使这根针线穿过。

回答

2

不确定你想要做什么?

您需要将该类映射为实体以便能够选择它的实例。

要么不包括类,原生SQL查询将数据的一个Object [],你可以在你自己的代码中映射到你的类。

或者将它映射为实体,除了您要返回的数据。当您将对象映射到查询结果时,@Table将不相关。这不应该导致任何错误,除非您自动创建表或使用完整性检查器。

或者将对象正确映射到表格。然后使用读取连接或批量读取来根据需要优化检索。

+0

是否有任何文档可能描述如何完整地完成此操作。我尝试了很多来自其他来源的建议,但这些解决方案似乎从来不合适。如果你能指出我正确的方向,一个完整的工作示例将会很有帮助。谢谢 – sldahlin 2011-03-07 16:41:48

+0

感谢您的帮助。我希望有一些地方能够把它放在一起,但我用你的建议来完成工作。 – sldahlin 2011-03-14 15:39:55