J'utilise JPA (hibernate), JAX-RS (Jersey) et Jackson.Comment fermer un gestionnaire d'entité lorsqu'il est utilisé avec Jackson et Jax-rs
Comment puis-je fermer mon gestionnaire d'entités après la construction et l'envoi de mon paquet?
Ce qui suit ne fonctionne pas et me donne une erreur. Il semble appeler em.close() avant que la réponse soit terminée.
@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(); }
}
GRAVE: Servlet.service() pour servlet [JAX-RS Servlet] dans le contexte de chemin [] jeta exception org.codehaus.jackson.map.JsonMappingException: Échec de l'initialisation paresseuse une collection du rôle: com.company.entity.Node.childList, aucune session ou session fermée (par la chaîne de référence: com.company.entity.Node [ "childIdList"])
J'utilise les transactions en d'autres méthodes similaires.