Попытка пакетной вставки .csv с использованием JPA / hibernate не работает должным образом - PullRequest
0 голосов
/ 04 февраля 2020

Я пытаюсь загрузить .csv с помощью сервлетов и вставить данные в БД для моего школьного проекта. Я работал над созданием нового EntityManager для каждого коммита, и для загрузки потребовались часы. Я искал для пакетных вставок, и это то, что я придумал:

entityManager.getTransaction().begin();
int i = 0;
int batchsize = 500;

while(scanner.hasNext()) {
i++
String row = scanner.next();
String[] column = row.split(";");
Entity e = new Entity();
e.setSomeValue(column[1]);
entityManager.persist(e);
if(i%batchsize == 0) {
entityManager.flush();
entityManager.clear();
}}
entityManager.getTransaction().commit();

Я думаю, что это сработало в первый раз, он вставил 90 КБ строк в БД, но попытка загрузить второй файл, похоже, работает но в конце новые строки не были добавлены. Я установил entityManager.setFlushMode (FlushModeType.COMMIT) и PK объекта является автоматически сгенерированной последовательностью, а не сгенерированной БД. Будет ли это иметь какое-либо отношение к:

При фиксации транзакция была отмечена только для отката, отката?

edit: забыли i ++

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...