Bonjour.
Je résume mon soucis :
Il y a une base de données avec une table User et une table Country liées par une relation 1-n (Un utilisateur réside dans un pays) :
Il y a un web service REST pour récupérer les données d'un utilisateur, en Spring + Persistance :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @Controller @Api(value = "/users") @RequestMapping("/users") public class UserController { @RequestMapping(value = "/", method = RequestMethod.GET) @ResponseBody public ResponseEntity<Iterable<User>> listUsers() throws ServletException { return new ResponseEntity<>( userDao.findAll(), HttpStatus.OK ); } }
La relation User/Country est définie dans le modèle comme ceci :Le problème est que quand je récupère les données des utilisateurs, je m'attends à n'avoir que le code du pays, mais les données du pays viennent aussi avec. Au lieu d'avoir
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 @Entity public class User implements Serializable { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "country") private Country country; } @Entity public class Country implements Serializable { @JsonIgnore @OneToMany(mappedBy="country",fetch=FetchType.LAZY) private List<User> users; }J'ai :
Code json : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 [ {"id":1,"mail":"test1@test.net","username":"test1","password":"hxdylk1csg3fsqklfvq4","country":"FR"}, {"id":2,"mail":"test2@test.net","username":"test2","password":"gfgh4dxg8sgbsbgqE78f","country":"BE"} ]
Code json : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 [ {"id":1,"mail":"test1@test.net","username":"test1","password":"hxdylk1csg3fsqklfvq4","country": {"code":"FR", "name":"France", "pleindautresdonnees"} }, {"id":2,"mail":"test2@test.net","username":"test2","password":"gfgh4dxg8sgbsbgqE78f","country": {"code":"BE", "name":"Belgique", "pleindautresdonnees"} }, ]
J'ai raccourci le résultat, il y a en réalité beaucoup plus de données provoquant au passage une erreur de stream.
Je pensais que l'ajout de FetchType.LAZY dans le modèle résoudrait le soucis.
Je suis un peu perdu, est-ce que vous avez une idée d'où ça peut venir, et comment arriver à ce que je veux ?
Merci.
Partager