2016-08-21 19 views
0

私は、このようなマップ何かフェッチすることができます知っている:fetchMap()をRecordMapperでどのように使用できますか?

this.ctx.select(
     shopSubscription.field(SHOP_SUBSCRIPTION.SHOP_ID), 
     shopSubscription.field(SHOP_SUBSCRIPTION.PAYMENT_GATEWAY_SUBSCRIPTION_ID), 
     shopSubscription.field(SHOP_SUBSCRIPTION.ADMIN_TOOL_FEATURE_TYPE_ID), 
     PAYMENT_GATEWAY_SUBSCRIPTION.SUBSCRIPTION_ID_TOKEN 
     ) 
    .from(PAYMENT_GATEWAY_SUBSCRIPTION) 
     .join(shopSubscription) 
      .on(PAYMENT_GATEWAY_SUBSCRIPTION.ID.eq(shopSubscription.field(SHOP_SUBSCRIPTION.PAYMENT_GATEWAY_SUBSCRIPTION_ID)) 
        .and(PAYMENT_GATEWAY_SUBSCRIPTION.PAYMENT_GATEWAY_TYPE_ID.eq(paymentGatewayType))) 
     .fetchMap(PAYMENT_GATEWAY_SUBSCRIPTION.PAYMENT_GATEWAY_TYPE_ID, ShopSubscriptionDTO.class); 

を私はさらにこのクエリにRecordMapperを追加することができれば、私は好むコンパイル時に問題を検出します。

fetchMap()を呼び出す方法はありますが、RecordMapperも提供していますか?私はこのようになりますと思って何

:あまりにfetchMap(Field<K>, RecordMapper<? super R, R>)があることを私は見ていなかったfetchMap()の異なる実装のかなり多くがある

this.ctx.select(
     shopSubscription.field(SHOP_SUBSCRIPTION.SHOP_ID), 
     shopSubscription.field(SHOP_SUBSCRIPTION.PAYMENT_GATEWAY_SUBSCRIPTION_ID), 
     shopSubscription.field(SHOP_SUBSCRIPTION.ADMIN_TOOL_FEATURE_TYPE_ID), 
     PAYMENT_GATEWAY_SUBSCRIPTION.SUBSCRIPTION_ID_TOKEN 
     ) 
    .from(PAYMENT_GATEWAY_SUBSCRIPTION) 
     .join(shopSubscription) 
      .on(PAYMENT_GATEWAY_SUBSCRIPTION.ID.eq(shopSubscription.field(SHOP_SUBSCRIPTION.PAYMENT_GATEWAY_SUBSCRIPTION_ID)) 
        .and(PAYMENT_GATEWAY_SUBSCRIPTION.PAYMENT_GATEWAY_TYPE_ID.eq(paymentGatewayType))) 

     // For each record apply the map() function 

     .map(new RecordMapper<Record<?>, ShopSubscriptionDTO>() { 
      @Override 
      public ShopSubscriptionDTO map(Record<?> record) { 
       ShopSubscriptionDTO shopSubscriptionDto = new ShopSubscriptionDTO(); 

       shopSubscriptionDto.setShopId(record.getValue(SHOP_SUBSCRIPTION.SHOP_ID) 
       // ... 

       return shopSubscriptionDto; 
      } 
     }); 

     // Fetch the result into a map where the key is SHOP_SUBSCRIPTION.ADMIN_TOOL_FEATURE_TYPE_ID 
     .fetchMap(SHOP_SUBSCRIPTION.ADMIN_TOOL_FEATURE_TYPE_ID); 
+0

'RecordMapper'引数を受け入れる' fetchMap() 'オーバーロードがあります。 ['fetchMap(RecordMapper、RecordMapper)'](http://www.jooq.org/javadoc/latest/org/jooq/ResultQuery.html#fetchMap-org.jooq.RecordMapper-org.jooq.RecordMapper-)、しかしそれがあなたが探しているものかどうかはわかりません。あなたは彼らと何をしたいですか? –

+0

@ LukasEder私が探しているのは、結果の 'HashMap'のすべての値に対して' RecordMapper'を実装して、選択したデータをビジネスオブジェクトに変換する方法です。 – displayname

+0

申し訳ありませんが、私はまだそれがどういう意味かはっきりしていません。予想されるコード/タイプなどで質問を更新できますか? –

答えて

1

ので。この問題を解決するのに役立ちます:

関連する問題