私はファイルとデータベースの2つの異なるソースから読み込み、アグリゲータでいくつかの操作を実行してから書き込む必要がありますファイルへの出力。apache camelでoutPutClassを使用してJDBCのディープマッピングを行うことができません
私はファイルを読むことができますが、データベースからファイルを読み込んだ後、ファイルをBeanに変換する必要があります。私はそれをすることができません。
ルート:
はfrom("file:{{InputFileDir1}}?noop=true")
.routeId("readInputFiles")
.unmarshal()
.bindy(BindyType.Csv,Job9.class)
.enrich("direct:resource", batchLogRecords)
.marshal()
.bindy(BindyType.Csv, ClubbedJob.class)
.to("file:{{OutPutDir}}?fileName={{FinalJoinedFile}}")
.log(LoggingLevel.INFO,"Left Join Complete")
.end();
from("direct:resource")
.setBody(simple("SELECT D.DC LOC,D.DEPT,D.CLASS as CLAS,D.ITEM,D.ITEM_CSPK, 'P' as Dummy FROM db2prod.ITEM_DC D,db2prod.FRTB_ITEM_W E WHERE D.DEPT=E.DEPT AND D.CLASS=E.CLASS AND D.ITEM=E.ITEM AND D.DC_I=E.LOC AND E.ALOC_PRCS='9987' with ur;"))
.to("jdbc:dataSourceDB2?outputClass=com.tgt.fff.beans.LookUpJob9")
.process(convertToObject)
.end();
上記ルートは、ファイルを読み取り、オブジェクトに変換することによって、クエリによって返された結果と豊か
以下は私のコードです。
.to("jdbc:dataSourceDB2?outputClass=com.tgt.fff.beans.LookUpJob9")
LookUpJob9.java
@Component
public class LookUpJob9 {
CompositeKey compositeKey;
String itemCspk;
String dummy;
--------getters & setters-----------
}
CompositeKey複合キーを含む4つのフィールドを含むクラスです。
今、問題はoutputClass属性がディープマッピングを実行できないことです。 itemCspkとダミーをマップできますが、CompositeKeyクラス内のフィールドをマップできません。
私は以下の例外を取得しています:私はbindyで上記のクラスを使用する場合
java.lang.IllegalArgumentException: Cannot map all properties to bean of type class com.tgt.fff.beans.LookUpJob9. There are 4 unmapped properties. {locI=553, deptI=2, clasI=0, itemI=3}
at org.apache.camel.component.jdbc.JdbcProducer.newBeanInstance(JdbcProducer.java:397) ~[camel-jdbc-2.18.2.jar:2.18.2]
at org.apache.camel.component.jdbc.JdbcProducer.extractRows(JdbcProducer.java:350) ~[camel-jdbc-2.18.2.jar:2.18.2]
at org.apache.camel.component.jdbc.JdbcProducer.setResultSet(JdbcProducer.java:332) ~[camel-jdbc-2.18.2.jar:2.18.2]
at org.apache.camel.component.jdbc.JdbcProducer.doCreateAndExecuteSqlStatement(JdbcProducer.java:225) ~[camel-jdbc-2.18.2.jar:2.18.2]
at org.apache.camel.component.jdbc.JdbcProducer.createAndExecuteSqlStatement(JdbcProducer.java:125) ~[camel-jdbc-2.18.2.jar:2.18.2]
at org.apache.camel.component.jdbc.JdbcProducer.processingSqlBySettingAutoCommit(JdbcProducer.java:86) ~[camel-jdbc-2.18.2.jar:2.18.2]
at org.apache.camel.component.jdbc.JdbcProducer.process(JdbcProducer.java:67) ~[camel-jdbc-2.18.2.jar:2.18.2]
at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61) ~[camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.processor.SendProcessor.process(SendProcessor.java:145) ~[camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) [camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:542) [camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) [camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:120) [camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.processor.Pipeline.process(Pipeline.java:83) [camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:197) [camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.component.direct.DirectProducer.process(DirectProducer.java:62) [camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.processor.Enricher.process(Enricher.java:187) [camel-core-2.18.2.jar:2.18.2]
at org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:77) [camel-core-2.18.2.jar:2.18.2]
は、私は2つをリンクするCompositeKeyクラスで@linkを使用しています。私がJDBCでそれを達成できるような方法はありますか?
感謝クラウスにJIRAチケットのログを記録するために歓迎されています。 – Sandy