私はJPA(hibernate)、JAX-RS(Jersey)、Jacksonを使用しています。
パケットが作成されて送信された後、エンティティマネージャを閉じるにはどうすればよいですか?
以下は機能せず、エラーが発生します。応答が完了する前にem.close()を呼び出しているようです。
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getNode( @QueryParam("nodeId") long nodeId ){
try {
Node node = em.find(Node.class, nodeId);
if (node == null) throw new WebApplicationException(Response.Status.NOT_FOUND);
Response response = Response.ok(node, MediaType.APPLICATION_JSON).build();
return response;
}
finally { em.close(); }
}
重大:パス[]のコンテキストでサーブレット[JAX-RSサーブレット]のServlet.service()が例外org.codehaus.jackson.map.JsonMappingExceptionをスローしました:ロールのコレクションを遅延初期化できませんでした:com.company.entity.Node。 childList、セッションまたはセッションが閉じられていません(参照チェーンを介して:com.company.entity.Node ["childIdList"])
私は他の同様の方法でトランザクションを使用しています。