2017-10-11 22 views
1

バックエンドの春のプロジェクトで、agent_idという名前のフィールドエイリアスを作成するクエリがありますが、その列はモデルにありません。これをフロントエンドのテーブルビューのフィールドとして表示する最良の方法は何ですか? Here'sクエリ:エイリアス列の結果セット

Query query = em.createNativeQuery("SELECT" + 
       " ips.*, " + 
       " s.mls_id AS imported," + 
       " p.INTEGRATOR_SALES_ASSOCIATED_ID AS agent_id " + 
       "FROM test1.ilist_property_summary ips " + 
       " LEFT JOIN test1.statistics s ON s.mls_id = ips.INTEGRATOR_PROPERTY_ID " + 
       " LEFT JOIN test1.person p ON p.INTEGRATOR_SALES_ASSOCIATED_ID = ips.INTEGRATOR_SALES_ASSOCIATED_ID " + 
       "WHERE ips.AGENCY_ID = :agencyId AND (s.statistics_type = 1 OR s.statistics_type IS NULL) AND ips.ORIG_LISTING_DATE BETWEEN :startDate AND :endDate"); 

     query.setParameter("agencyId", agencyId) 
       .setParameter("startDate", DateUtil.asDate(startDate), TemporalType.DATE) 
       .setParameter("endDate", DateUtil.asDate(endDate), TemporalType.DATE); 


     return (List<PropertyVO>) query.getResultList().stream().map(o -> processProperty((Object[]) o)).collect(Collectors.<PropertyVO>toList()); 

私はすでにのagent_idを示しフィールドを持っていますが、テーブルの人の同じフィールドでフェッチません。左の結合からフェッチされたフィールドエージェントIDエイリアスを取得する必要があります。

INTEGRATOR_SALES_ASSOCIATED_ID 

はなく、IPSから、表Pから取り出される。ここで

Query query = em.createNativeQuery("SELECT" + 
       " ips.id, ips.agency_id, ips.integrator_property_id, ips.orig_listing_date, ips.contract_type," + 
       " ips.transaction_type, ips.current_listing_price, ips.current_listing_currency, ips.apartment_number, ips.commercial_residential," + 
       " ips.commission_percent, ips.commission_value, ips.property_type, ips.street_name, ips.street_number," + 
       " s.mls_id AS imported," + 
       " p.INTEGRATOR_SALES_ASSOCIATED_ID AS INTEGRATOR_SALES_ASSOCIATED_ID" + 
       " FROM test1.ilist_property_summary ips " + 
       " LEFT JOIN test1.statistics s ON s.mls_id = ips.INTEGRATOR_PROPERTY_ID " + 
       " LEFT JOIN test1.person p ON p.INTEGRATOR_SALES_ASSOCIATED_ID = ips.INTEGRATOR_SALES_ASSOCIATED_ID " + 
       "WHERE ips.AGENCY_ID = :agencyId AND (s.statistics_type = 1 OR s.statistics_type IS NULL) AND ips.ORIG_LISTING_DATE BETWEEN :startDate AND :endDate "); 

フィールド:

+0

最初にips。*を使用しないでください。ファイルの順序が変わる可能性があるからです。そして、あなたは何を達成したいのですか?結果セットをフロントエンドにテーブルとして表示するだけですか? –

+0

これらのフィールドをフロントエンドのテーブルに表示したいのですが、私はすでにAPIとして動作しています。 '[{" id ":1936041、" origListingDate ":" 2017-01-16 00:00:00.0 " 、 "address": ""、 "agent": "420041019"、 "price":53000.0、 "currency": "USD"、 "contractType":1、 "transactionType":2、 "imported":false、 "mlsid ":" 420041019-292 "}、'。しかし、モデルの列として定義していないエイリアス列を表示する必要があります。 –

+0

モデルを使用する場合は、フィールドをモデルに追加する必要があります。他の方法はありません。 –

答えて

1

私は別のアプローチに従いました。私は特定のフィールドを選択したので、このフィールドを他のテーブルから取り出すことができます。

関連する問題