役立ちます:
Mule Sql Query - passing parameters to the IN operator
をここでは、このJavaのブロックでは、私が建てました私のクエリとは、sql
と呼ばれるフロー変数に入れます:
public Object onCall(MuleEventContext eventContext) throws Exception {
// TODO Auto-generated method stub
ArrayList<String> vib_list = eventContext.getMessage().getInvocationProperty("vibs");
String locale = eventContext.getMessage().getInvocationProperty("lang_locale").toString();
StringBuilder query = new StringBuilder();
String queryBase = "select distinct(matnr) from cated_prodrelease where matnr in(";
query.append(queryBase);
int numIndices = ((ArrayList<Integer>)eventContext.getMessage().getInvocationProperty("vibs")).size();
ArrayList<String> indices = new ArrayList<String>();
for(int i=0; i<numIndices; i++) {
indices.add("'"+ vib_list.get(i) + "'");
}
query.append(StringUtils.join(indices, ", "));
query.append(") " + "AND locale = '" + locale + "' " + "AND release_type = 'PI_RELEASE'");
String finalQuery = query.toString();
eventContext.getMessage().setInvocationProperty("sql", finalQuery);
return eventContext.getMessage();
}
次に、このフロー変数sqlをdbコネクタのdynamic-queryパラメータに直接使用しました。これは完全に機能しました。
<db:select config-ref="PDP_Configuration" doc:name="Database">
<db:dynamic-query><![CDATA[#[flowVars.sql]]]></db:dynamic-query>
</db:select>
これは公式な答えはありませんが、私はミュール開発者が主要な問題のこの種の正式解決策を見つける必要があると考えています。私はそれが助けて欲しい!
実際に私は文字列リストで作業しています、私はちょうど私の質問に整数の例を与えた。しかし、私がデータベースで探しているデータ型はVARCHARなので、これはうまくいきませんが、もちろん数値データ型にも当てはまります。あなたの優しい答えをありがとう。 – Hayra