2

我正在尝试处理两个.csv文件并将它们的数据保存到数据库中。我正在使用 java dsl 而不是同样的弹簧。

为了更好地解释这个场景:
我正在读取两个.csv文件并处理它们以将它们的数据上传到 sql 数据库中。我为此执行的步骤是

  1. 在 servlet 容器文件中指定引擎初始化程序。
  2. 创建一个EngineInitialiser
  3. 将 EngineInitialiser 绑定到核心引擎。
  4. 创建将数据持久保存到数据库所需的 dao 文件。
  5. 创建定义绑定的引擎模块。
  6. 定义定义文件特定格式的文件。

然而,问题是

尝试将交换解组为BindyCsvDataFormat. 有两个格式类文件,因为我为 file1 输入文件指定了一个,一个为file2.csv.

现在 bindy 正在尝试将格式映射到父类文件。但是,当它选择file1.csv它时,它会将其映射到同一包下定义的模型 1 和模型 2。但是,它应该只映射到一个类。如何强制它只映射到一个格式类?

错误如下:

java.lang.IllegalArgumentException:缺少某些字段(可选或必填),行:org.apache.camel.dataformat.bindy.BindyCsvFactory.bind(BindyCsvFactory.java:215) atorg.apache.camel.dataformat.bindy 的 1。 csv.BindyCsvDataFormat.unmarshal(BindyCsvDataFormat.java:169)atorg.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:58) at org.apache.camel.util.AsyncProcessorConverterHelper$ProcessorToAsyncProcessorBridge.process(AsyncProcessorConverterHelper.java:61 ) 在 org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) 在 org.apache.camel.processor.DelegateAsyncProcessor 的 org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73)。在 org.apache.camel.management.InstrumentationProcessor 处理(DelegateAsyncProcessor.java:90)。进程(InstrumentationProcessor.java:71)在 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.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91) 在 org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper .java:73) 位于 org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:223) 的 org.apache.camel.processor.RedeliveryErrorHandler.processErrorHandler(RedeliveryErrorHandler.java:333)。 org.apache.camel.processor 中的处理器.RouteContextProcessor.processNext(RouteContextProcessor.java:45)。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.processBatch(GenericFileConsumer.java:175) 在 org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:352)。 camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:136) at org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:138) at org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:90) at 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) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java :205) 在 java.util.concurrent.ThreadPoolExecutor$Worker。runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:619) |#]

4

2 回答 2

0

您需要为不同的绑定模型使用不同的包名称。这是目前的限制,将来会改进。

于 2012-06-08T14:19:46.633 回答
0

不同的实体管理者应该解决这个问题。

于 2012-07-16T05:08:19.787 回答