2016-08-09 5 views
0

私は、char型のフィールド(10)[]を持つPGテーブルを持っています。Mule:ArrayパラメーターをDB Updateに送る方法

テーブルのレコードをMuleフローの値で更新する必要があります。

だから、私はこのようなものでした。そして、

flowVars.test=['aaa', 'bbb',ccc']; 

を、私はこのような更新ステートメントを提出しようとしている:

update tab1 set fld1=#[flowVars.test] 

それはエラーで失敗します:

Cannot cast an instance of java.util.ArrayList to type Types.ARRAY 

私の理解では、SQL配列をこのシナリオで使用する必要がありますが、私はinstaを取得する方法を理解できませんそのような配列の流れの中で、そしてMELでそれをどのように扱うかということです。

誰かに助言してもらえますか?

Connection#createArrayOf()を使用することをお勧め多くの情報源がありますが、

答えて

0

[OK]を、私はMuleSoftのdocに答えを見つけました。 バージョン3.6以降では、DBコネクタはカスタムタイプをサポートしており、SQL配列と構造体およびカスタムユーザークラス間のマッピングを定義できます。 hereと記載されています。

+0

これを調べるのに約1ヶ月かかりましたか?違法行為は意味がなく、ただミュールで物事を研究するのにどれくらいかかりますか – mCeviker

0

、ありがとうございました。しかし、私はデータベースコネクタでどのように使用するのか分かりません。

  1. StringにArrayListに変換:

    しかし、この目的のために、私は、このソリューションを行います。更新SQLクエリになる

  2. ダイナミック{value1, value2, ...}
  3. 変更パラメータ化されたからデータベースクエリの種類::update tab1 set fld1 = '#[flowVars.test]'それはように形成されなければなりません。この問合せタイプには、追加の一重引用符が必要です。

最後に、以下の構成を使用して、私は[]タイプ文字(10)のフィールドを更新することができます。

<expression-transformer expression="#[flowVars.test = ['aaa', 'bbb', 'ccc'].toString().replace('[', '{').replace(']', '}')]" doc:name="Expression"/> 
<db:update config-ref="Postgre_Database_Configuration" doc:name="Database"> 
    <db:dynamic-query><![CDATA[update tab1 set fld1 = '#[flowVars.test]']]></db:dynamic-query> 
</db:update> 
関連する問題