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) :

Nom : DB2.png
Affichages : 313
Taille : 29,2 Ko


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 :
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;
}
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 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"}
]
J'ai :
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.