我有一个从数据库中读取数据的端点。结果,我有两个DAO条款:DAO1和DAO2。 在DAO1中,我有类似的东西:
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
陌生人的一部分是我还有一个端点用于检索调用相同DAO的MyDO1条目,并且它可以工作。
答案 0 :(得分:0)
没有工作的服务类有@Singleton。删除它解决了问题。