2017-05-08 2 views
1

Sur une relation bidirectionnelle entre deux entités (un ControlTable composé de ControlSteps), j'essaie simplement de différentes manières de demander un ControlTable en connaissant la collection ControlSteps de celui-ci. Je sais qu'il n'est pas recommandé d'avoir ce mapping bidirectionnel mais j'ai besoin de connaître chaque enfant d'un parent, et le parent de chaque enfant.Hibernate select avec mappage birectionnel

Je configuré comme ça en classe ControlTable:

@OneToMany(mappedBy = "controlTable",cascade = CascadeType.ALL, fetch=FetchType.EAGER) 
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 
@Fetch(FetchMode.JOIN) 
private Set<ControlStep> controlSteps; 

Et comme celui-ci pour la classe ControlStep:

@ManyToOne(optional=false, fetch=FetchType.LAZY) 
@JoinColumn(name="ctrl_table_id", referencedColumnName = "id") 
    private ControlTable controlTable; 

Quand j'utilise la findAll de requête JPA par défaut(), il ne fonctionne pas pour obtenir la liste des ControlTables (ou une seule) car elle demande récursivement le parent dans le parent de l'enfant (réponse infinie). D'une autre manière, j'ai essayé de mettre tout en chargement LAZY, avec une requête HQL récupérant les enfants, mais le résultat est le même.

Avez-vous une idée de la façon d'obtenir ces collections sans problèmes?

Merci beaucoup d'avance

+0

Pour votre information L'API JPA n'a pas un tel "findAll". Spring Data JPA (! = API JPA) a une telle méthode –

+0

Vous avez raison, j'ai manqué de mentionner "Spring data". Pardon ;) – gomesito

Répondre