CSVファイルからクリーンなデータベースにいくつかのデータをロードしようとしています。私はApache Camelを使用してETLプロセスを作成し、入力CSVを読み込んでファイルを複数の行に分割し、行ごとに1つのトランザクションを使用して並列に各行を処理します。TransactionManagerException:このスレッドのトランザクションは現在ありません
クラスImportRouteBuilderは、それが非常にあるので、私のモデルはまだ進化している間、LOADのCSVのサイファーかのNeo4jのインポートツールを使用していたしませんでしたので、私はこれをしたRouteBuilder {
private final Importer importer
private final String endpoint
public ImportRouteBuilder(Importer importer, String endpoint) {
this.endpoint = endpoint
this.importer = importer
}
@Override
void configure() throws Exception {
from(endpoint)
.unmarshal(buildCsvDataFormat())
.split(body())
.parallelProcessing()
.bean(importer)
}
private static CsvDataFormat buildCsvDataFormat() {
CsvDataFormat csv = new CsvDataFormat();
csv.skipHeaderRecord = true
csv
}
}
@Slf4j
@Service
class CountryCsvImporter implements Importer {
@Autowired
private CountryRepository countryRepository
@Autowired
private Session session
@Override
void process(List record) {
Transaction tx = session.beginTransaction();
try {
importCountry(record)
tx.commit()
}catch (Throwable t) {
tx.rollback()
}
tx.close()
}
を拡張しますプロトタイプ作成中にOGMを使用すると便利です。しかし今、私はOGMがこれを生成するプロセスの途中で壁を発見しましたTransactionManagerException、トランザクションを管理するいくつかのスレッド問題のように見えます。 org.neo4j.ogm.exception.TransactionManagerException:によって引き起こさ :com.cartrawler.service.CountryImportSpecification.Shouldで
は、国のcsv(9 CountryImportSpecification.groovy)をインポートすることができ、トランザクションは、このスレッドの現在のではありませんorg.neo4j.ogm.transaction.AbstractTransaction.rollbackでorg.neo4j.ogm.session.transaction.DefaultTransactionManager.rollback(DefaultTransactionManager.java:78) (AbstractTransaction.java:65)org.neo4jで で 。 ogm.drivers.embeddedtransaction.EmbeddedTransaction.rollback(EmbeddedTransaction.java:60) at com.cartrawler.service.CountryCsvImporter.process(CountryCsvImpo rter.groovy:28)
は、トランザクションが単一のスレッドのみであると親切 ルイスオスカー
質問の書式を2回修正しましたが、読みやすくするために書式を修正するようにしましたが、変更は続けています。自分で修正したい場合は、コードやスタックトレースを[インデントする方法](http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks)をご覧ください。 – cybersam