Сбой транзакции при однопоточном выполнении - PullRequest
0 голосов
/ 06 февраля 2020

В настоящее время работает над приложением Hibernate. Мы перемещаем исторические данные из наших файловых систем в одну из наших баз данных. Я просто читаю содержимое файлов csv и фиксирую это содержимое в БД.

К сожалению, у меня возникает следующая ошибка:

Исключение в потоке "main" java .lang.IllegalStateException: Session / EntityManager закрыт

Я несколько раз пытался изменить свое предложение session.getTransaction (), но безрезультатно. Когда я исследую эту ошибку, мои предложения вращаются вокруг многопоточных приложений. Мое приложение однопоточное.

Код:

for (File d : archiveDirArray) {

            File[] fileList = d.listFiles();

            for (File f : fileList) {

                StringJoiner fileLocation = new StringJoiner("\\").add(parentDirectory).add(d.getName())
                        .add(f.getName());

                String fileName = f.getName();

                ConsumptionBuild[] cb = new ProcessFiles().readFileAndGenerateObjects(fileLocation.toString(), fileName,
                        d.getName());
                session.beginTransaction();//THIS IS LINE 67, WHERE THE ERROR IS THROWN!!!

                for (ConsumptionBuild build : cb) {

                    session.save(build);
                }
                session.getTransaction().commit();

            }

        }//end of outer for loop
        session.close();

    }//end of main method

Отслеживание стека:

Exception in thread "main" java.lang.IllegalStateException: Session/EntityManager is closed
    at org.hibernate.internal.AbstractSharedSessionContract.checkOpen(AbstractSharedSessionContract.java:371)
    at org.hibernate.engine.spi.SharedSessionContractImplementor.checkOpen(SharedSessionContractImplementor.java:148)
    at org.hibernate.internal.AbstractSharedSessionContract.beginTransaction(AbstractSharedSessionContract.java:464)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:351)
    at com.sun.proxy.$Proxy33.beginTransaction(Unknown Source)
    at com.hibernate.main.HibernateMain.main(HibernateMain.java:67)

Почему я получаю эту ошибку? Как мне это исправить?

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