0
データベースからデータを読み取るエンドポイントがあります。その結果、DAO1とDAO2という2つのDAOクラスがあります。Play Framework:EntityManagerが閉じられています
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();
}
さて、私のサービスクラスでは、私は2つのDAOの呼び出しを行います。DAO2で
public MYDO1 get(Long id) {
return em.find(MyDO1.class, id);
}
が、私はこのような何かを持っている:DAO1で 私はこのような何かを持っています。最初の呼び出しですべてが動作します。しかし、2番目の呼び出しでは、私はこのエラーを受け取ります:java.lang.IllegalStateException: EntityManager is closed
見知らぬ人は、同じDAOを呼び出すMyDO1エントリを取得するためのエンドポイントがあり、動作するということです。
適切に設計されたシングルトンクラスが、閉じたエンティティマネージャを再利用する方法を実際には分かりません。私はこれをすぐに解決したものとして扱いません。あなたは問題をなくしました。 – Gimby