Spring 3 アプリでは、コントローラーは JpaCollectorManager を呼び出し、JpaCollectorInfoDao を呼び出して、ネイティブ クエリによって定義されたリストを取得します。jpqlに実装されていないpostgresql機能を使用する必要があるため、クエリはsqlとjpqlを使用する2つの別々のテーブルを呼び出します。コントローラーがリストをファイルしようとすると、次のエラー メッセージが表示されます。
例外 [EclipseLink-6007] (Eclipse Persistence Services - 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 perform_schema.process_set pst on pst.collector_id = col.コレクター ID col.collector_id、pst.process_source_type、pst.process_source_timestamp desc による順序 ")
コントローラー 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 を定義すると、テーブルを解決できないことがわかります (実際のテーブルがないため、これは正しいことです)。私はあらゆる種類の順列を試しましたが、この上糸を作ることができないようです.