2011-10-27 5 views
6

クエリスローDIH(DataImportHandler)から返された値 を使用して動的列(キー/値として)の名前を作成する方法はありますか?例えばDIH(DataImportHandler)を使用する動的列名

<entity name="foo" dataSource="my_database" query="select key,value from foo where id=${item.id}"> 
    <field column="${foo.key}" value="${foo.value}" name="${foo.key}_s"/> 
</entity> 

答えて

8

使用ScriptTransformer -

例 -

データコンフィグ - 追加カスタムフィールド -

<script><![CDATA[ 
     function addfield(row){ 
      var fieldName = row.get('key') + "_s" 
      row.put(fieldName, row.get('value')); 
      return row; 
     } 
]]></script> 

エンティティマッピング - に注意する

<entity name="foo" dataSource="my_database" transformer="script:addfield" query="select key,value from foo where id=${item.id}"> 
    ...... 
</entity> 
+0

1の事。あなたのスキーマに 'key'または' value'という名前のフィールドがある場合、 'foo'エンティティのクエリでエイリアスし、それに応じてエイリアス名を使うようにトランスフォーマ関数を変更します。 (残念ながら 'key 'と同じ名前の複数値フィールドがあり、このクエリの値が自分の複数値フィールドに追加されました。) – arun

関連する問題