我正在尝试处理两个.csv
文件并将其数据保存到数据库中。
我使用的是 java dsl 而不是 spring。
为了更好地解释这个场景:
我正在读两本.csv
文件并处理它们以将数据上传到 sql 数据库中。我为此执行的步骤是
- 在 servlet 容器文件中指定引擎初始化程序。
- 创建一个
EngineInitialiser
- 将 EngineInitialiser 绑定到核心 Engine。
- 创建将数据保存到数据库所需的 dao 文件。
- 创建定义绑定的引擎模块。
- 定义文件,定义文件特定的格式。
然而,问题是
尝试将交换解组到BindyCsvDataFormat
。有两种格式类文件,因为我已指定一种用于 file1 输入文件,另一种用于file2.csv
.
现在bindy正在尝试将格式映射到父类文件。但是,当它选择file1.csv
它将其映射到同一包下定义的 model1 和 model2。
但是,它应该仅将其映射到一个类。如何强制它仅映射到一种格式类?
错误如下:
java.lang.IllegalArgumentException:缺少某些字段(可选或强制),行:1
在org.apache.camel.dataformat.bindy.BindyCsvFactory.bind(BindyCsvFactory.java:215)
atorg.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat.unmarshal(BindyCsvDataFormat.java:169)atorg.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:58)
在 org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61)
在 org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
在 org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
在 org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在 org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71) 在 org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) 在 org.apache.camel.processor.DelegateAsyncProcessor.processNext (DelegateAsyncProcessor.java:99)at org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在 org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91)
在 org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
在 org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:333)
在 org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:223)
在 org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
在 org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在 org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:304)
在 org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
在 org.apache.camel.processor.Pipeline.process(Pipeline.java:117)
在 org.apache.camel.processor.Pipeline.process(Pipeline.java:80)
在 org.apache.camel.processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)
在 org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在 org.apache.camel.processor.UnitOfWorkProcessor.processAsync(UnitOfWorkProcessor.java:150)
在 org.apache.camel.processor.UnitOfWorkProcessor.process(UnitOfWorkProcessor.java:117)
在 org.apache.camel.processor.RouteInflightRepositoryProcessor.processNext(RouteInflightRepositoryProcessor.java:50)
在 org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在 org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)
在 org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99)
在 org.apache.camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90)
在 org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessor.java:71)
在 org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:352)
在 org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:175)
在 org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:136)
在 org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:138)
在org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:90)
在 java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
在 java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317)
在 java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150)
在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98)
在java.util.concurrent.ScheduledThreadPoolExecutor $ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181)
在 java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205)
在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
在 java.lang.Thread.run(Thread.java:619)
|#]
不同的bindy模型需要使用不同的包名。这是目前的一个限制,将来会得到改进。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)