Comment charger paresseux récupéré des éléments de Hibernate/JPA, dans mon contrôleur

J'ai une classe de Personne:

@Entity
public class Person {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToMany(fetch = FetchType.LAZY)
    private List<Role> roles;
    //etc
}

Avec un plusieurs-à-plusieurs relation qui est paresseux.

Dans mon contrôleur, j'ai

@Controller
@RequestMapping("/person")
public class PersonController {
    @Autowired
    PersonRepository personRepository;

    @RequestMapping("/get")
    public @ResponseBody Person getPerson() {
        Person person = personRepository.findOne(1L);
        return person;
    }
}

Et la PersonRepository est juste de ce code, rédigé selon ce guide

public interface PersonRepository extends JpaRepository<Person, Long> {
}

Toutefois, dans ce contrôleur j'ai vraiment besoin de la lazy-données. Comment puis-je déclencher son chargement?

De la tentative d'accès, elle échouera avec

échoué paresseusement initialiser une collection de rôle:
pas de.brunante.momus.de modèle.Personne.les rôles, n'a pas pu initialiser proxy - pas de
Session

ou d'autres exceptions en fonction de ce que j'ai essayer.

Mon xml-description, en cas de besoin.

Grâce.

  • Pouvez-vous écrire une méthode qui permettra de créer une requête pour récupérer un Person objet compte tenu de certains paramètres? Dans ce Query, comprennent la fetch clause de charge et de la Roles trop pour la personne.
InformationsquelleAutor Matsemann | 2013-03-12