У меня есть конечная точка, которая считывает данные из базы данных. В результате у меня есть два кластера DAO: DAO1 и DAO2. В DAO1 у меня есть что-то вроде этого:Play Framework: EntityManager закрыт
public MYDO1 get(Long id) {
return em.find(MyDO1.class, id);
}
В DAO2 у меня есть что-то вроде этого:
public List<MyDO2> getSomething(Long idFromDO1) {
CriteriaQuery<MyDO2> criteriaQuery= criteriaBuilder.createQuery(MyDO2.class);
Root<MyDO2> root = criteriaQuery.from(MyDO2.class);
criteriaQuery.select(root);
Predicate p1 ...
Predicate p2 ...
criteriaQuery.where(myPredicates);
Query query = em.createQuery(criteriaQuery);
return query.getResultsList();
}
Теперь в моем классе обслуживания, я делаю вызов на двух DAO,. При первом звонке все работает. При втором вызове, однако, я получаю эту ошибку: java.lang.IllegalStateException: EntityManager is closed
Незнакомая часть - это то, что у меня также есть конечная точка для извлечения записи MyDO1, которая вызывает тот же DAO, и она работает.
Я действительно не вижу, как правильно спроектированный одноэлементный класс приведет к повторному использованию закрытого менеджера объектов. Я бы не рассматривал это так быстро, потому что теперь вы ушли с проблемы. – Gimby