Éviter Jackson sérialisation non récupérés paresseux objets

J'ai un contrôleur simple que de retourner un objet Utilisateur, cet utilisateur ont un attribut de coordonnées qui ont la propriété hibernate FetchType.PARESSEUX.

Lorsque j'essaie d'obtenir de cet utilisateur, je l'ai toujours à la charge de toutes les coordonnées pour obtenir de l'utilisateur de l'objet, sinon quand Jackson essayez de sérialiser l'Utilisateur lance l'exception:

com.fasterxml.jackson.databind.JsonMappingException: impossible d'initialiser le proxy - pas de Session

Cela est dû à Jackson essaie de récupérer ce unfetched objet. Voici les objets:

public class User{

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
    @JsonManagedReference("user-coordinate")
    private List<Coordinate> coordinates;
}

public class Coordinate {

    @ManyToOne
    @JoinColumn(name = "user_id", nullable = false)
    @JsonBackReference("user-coordinate")
    private User user;
}

Et le contrôleur:

@RequestMapping(value = "/user/{username}", method=RequestMethod.GET)
public @ResponseBody User getUser(@PathVariable String username) {

    User user = userService.getUser(username);

    return user;

}

Il y a une manière de dire à Jackson pour ne pas arranger le unfetched objets? J'ai été à la recherche d'autres réponses posté il y a 3 ans la mise en œuvre de jackson-hibernate-module. Mais probablement il pourrait être réalisé avec un nouveau jackson fonctionnalité.

Mes versions sont:

  • Printemps 3.2.5
  • Hibernate 4.1.7
  • Jackson 2.2

Merci d'avance.

  • l'approche décrite dans ces 2 liens a fonctionné pour moi, Printemps 3.1, Hibernate 4 et Jackson-Module-Hibernate et FasterXML / jackson-type de données-hibernate
  • Merci indybee, j'ai regardé le tutoriel, printemps 3.2.5 ont déjà un MappingJackson2HttpMessageConverter, mais je ne peux pas l'utiliser afin d'éviter la non récupérés paresseux objet, aussi j'ai essayé de la mise en œuvre de l'un dans le tutoriel, mais rien...
  • êtes-vous d'obtenir le même message d'erreur "impossible d'initialiser le proxy" ou quelque chose de différent? (j'ai utilisé le supplément de HibernateAwareObjectMapper décrites dans les articles avec le Printemps 3.2.6 et Hibernate 4.1.7 et jackson 2.3)
  • Je l'ai!! Depuis la version 3.1.2 de Printemps ont son propre MappingJackson2HttpMessageConverter et ont presque le même comportement que celui du tutoriel, mais le problème est que je suis en utilisant Spring java config et je commence avec javaconfigs. J'essayais de faire un @Bean MappingJackson2HttpMessageConverter, au lieu de l'ajouter à la HttpMessageConverters de Printemps, c'est peut-être plus clair dans la réponse 🙂
  • content que ça fonctionne 🙂
  • Est-il cassé au Printemps Boot 2?

InformationsquelleAutor r1ckr | 2014-02-11