Bonjour,
J'ai un client web qui envoi à mon serveur Tomcat des données au format JSON dans le but de les persister en base de données.
Je travaille sur un modèle REST, et mon controler qui reçoit la requête est le suivant :
Ces données JSON sont donc le miroir de l'entité Partner présente dans mon modèle (hibernate).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @RequestMapping(value="/comeHere", method = RequestMethod.POST, consumes="application/json") @ResponseBody public void create(@RequestBody Partner partner) { /* ... */ }
Mon entité Partner possède une relation ManyToOne avec une entité Manager qui est également passée via le JSON que je vous montre de manière simplifiée :
Le problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 { "nom":"Smith", "manager": { "managerId":1, "nom":"CA" }, "matricule":"123" }
Le serveur renvoit une erreur avant d’exécuter la fonction que ej vous ai mis plus haut. L'erreur reçue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DEBUG: [mars-28 12:10:37,148] method.annotation.ExceptionHandlerExceptionResolver - Resolving exception from handler [public void controller.PartnerController.create(domain.Partner)]: org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Unrecognized field "managerId" (Class domain.Manager), not marked as ignorable at [Source: org.apache.catalina.connector.CoyoteInputStream@1fbbd2d; line: 1, column: 108]; nested exception is org.codehaus.jackson.map.JsonMappingException: Unrecognized field "managerId" (Class domain.Manager), not marked as ignorable at [Source: org.apache.catalina.connector.CoyoteInputStream@1fbbd2d; line: 1, column: 108]
Est-ce donc impossible de passer des objets imbriqués en JSON à mon controler Spring ? Si non quelles sont les configurations à réaliser ?
PS : les managers sont déjà persisté en BDD
Partager