Сохранить содержимое в базе данных внутри потока Java - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь запустить немного кода внутри потока , который будет делать некоторые запросы к базе данных, я использую jpa без пружины. Код выглядит следующим образом:

@Stateless
public class ResultServiceImpl implements ResultService {

    @Inject
    private ReportService reportService;

    @Inject
    private ReportRepository reportRepository;

    public void processAllReports(){
        Runnable runnable = () -> {
                    ReportDAO dao = (ReportDAO) reportRepository;
                    EntityManager em = dao.getEm().getEntityManagerFactory().createEntityManager();

                    em.getTransaction().begin();
                    reportService.process();
                    em.getTransaction().commit();
                };
                Thread thread = new Thread(runnable);
                thread.start();
            }
    }
}

в моих тестах, когда я пытаюсь начать транзакцию, я получаю сообщение об ошибке

00:47:49,264 ERROR [stderr] (Thread-121) Exception in thread "Thread-121" java.lang.IllegalStateException: A JTA EntityManager cannot use getTransaction()

00:47:49,264 ERROR [stderr] (Thread-121)    at org.hibernate.jpa.spi.AbstractEntityManagerImpl.getTransaction(AbstractEntityManagerImpl.java:1333)

00:47:49,264 ERROR [stderr] (Thread-121)    at br.com.govbr.controleinterno.domain.service.impl.UploadServiceImpl.lambda$0(UploadServiceImpl.java:198)

00:47:49,265 ERROR [stderr] (Thread-121)    at java.lang.Thread.run(Unknown Source)

Кто-нибудь может дать направление или даже лучшее возможное решение этой проблемы?

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