В настоящее время работает над приложением 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)
Почему я получаю эту ошибку? Как мне это исправить?