Bonjour,
J'utilise Spring Data JPA dans mon application
J'ai une entité qui contient une List<Interlocuteur> et une List<Lieu>
Via la méthode FinAll dans mon Repository, Je souhaite charger les deux listes
.. J'ai essayé de faire référence aux deux entityGraph dans mon Repository
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 @Entity @Table(name="OPERATION") @NamedEntityGraph(name="operation.interlocuteur",attributeNodes = @NamedAttributeNode("interlocuteurs") ) @NamedEntityGraph(name="operation.lieu",attributeNodes = @NamedAttributeNode("lieux") ) public class Operation { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="OPERATION_ID") private Long id; private String titre; @OneToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL) @JoinColumn(name="OPERATION_ID") private List<Interlocuteur> interlocuteurs = new ArrayList<>() ; @OneToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL) @JoinColumn(name="OPERATION_ID") private List<Lieu> lieux = new ArrayList<>(); }
Mais j'ai une erreur de compilation si j'utilise deux fois l'annotation @EntityGraph
Y-a-t-il une possibilité de faire un findAll() qui charge la totalité de données de mon Entity en utilisant @EntityGraph?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Repository public interface OperationRepositoryInterface extends PagingAndSortingRepository<Operation,Long> { @EntityGraph(value= "operation.interlocuteur", type= EntityGraph.EntityGraphType.FETCH) @EntityGraph(value= "operation.lieu", type= EntityGraph.EntityGraphType.FETCH) Iterable<Operation> findAll(); }
Si ce n'est pas possible, je sais qu'il y a la possibilité de l'annotation @Query dans mon Repository.... même si je trouve la solution plus complexe
Mais je n'arrive pas à réaliser la requête JPQL qui permet d'explorer toute les données
Exemple qui fonctionne :
Exemple qui ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @Query("SELECT o FROM Operation o " + "INNER JOIN FETCH o.interlocuteurs " + "WHERE o.id=?1") Optional<Operation> findById(Long id);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 @Query("SELECT o FROM Operation o " + "INNER JOIN FETCH o.interlocuteurs " + "INNER JOIN FETCH o.lieux " + "WHERE o.id=?1") Optional<Operation> findById(Long id);
D'avance merci pour vos éclaircissements
Partager