2

.csv2 つのファイルを処理し、それらのデータをデータベースに保持しようとしています。私はJava DSLを使用していますが、同じためのスプリングではありません。

シナリオをもう少し詳しく説明するには、
2 つのファイルを読み込ん.csvで処理し、それらのデータを SQL データベースにアップロードしています。これに対して実行した手順は次のとおりです。

  1. サーブレット コンテナー ファイルでエンジン初期化子を指定します。
  2. を作成するEngineInitialiser
  3. EngineInitialiser をコア エンジンにバインドします。
  4. データをデータベースに永続化するために必要な dao ファイルを作成します。
  5. バインディングを定義するエンジン モジュールを作成します。
  6. ファイルに固有の形式を定義するファイルを定義します。

ただし、問題は

への交換を非整列化しようとすると問題が発生しBindyCsvDataFormatます。1 つは file1 入力ファイル用に、もう 1 つはfile2.csv.

現在、bindy は形式を親クラス ファイルにマップしようとしています。しかし、それをfile1.csv取得すると、同じパッケージで定義された model1 と model2 の両方にマップされます。ただし、それを 1 つのクラスにのみマップする必要があります。強制的に 1 つの形式クラスにのみマップするにはどうすればよいですか?

エラーは次のとおりです。

java.lang.IllegalArgumentException: 一部のフィールドが欠落しています (オプションまたは必須)、行: 1 at 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) at 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. org.apache.camel.management.InstrumentationProcessor のプロセス (DelegateAsyncProcessor.java:90)。process(InstrumentationProcessor.java:71) at org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:73) at org.apache.camel.processor.DelegateAsyncProcessor.processNext(DelegateAsyncProcessor.java:99) at org.apache .camel.processor.DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.TraceInterceptor.process(TraceInterceptor.java:91) at 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. org.apache.camel.processor の processor.RouteContextProcessor.processNext(RouteContextProcessor.java:45)。DelegateAsyncProcessor.process(DelegateAsyncProcessor.java:90) at org.apache.camel.processor.interceptor.DefaultChannel.process(DefaultChannel.java:304) at 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) at 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 org.apache.camel.management.InstrumentationProcessor.process(InstrumentationProcessorjava.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.同時. :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 に答える