Bonjour,
J'ai besoin de votre aide car j'ai des problèmes de mapping.
On m'a donné un projet dans lequelle je dois implémenter une méthode qui filtre les résultats.
Le projet est un lisiting de concerts avec 3 tables Event(Evenement) Band(groupe) Member(Membres du groupe)
Dans le readme il est écrit "* It uses HSQLDB as an in-memory database."
Dans le projet il y a un fichier sql qui semble insérer les données
Ils ont aussi créé des tables pour gérer les relations (un événement concerne 1 ou plusieurs groupes, un groupe contient un ou plusieurs membres)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 INSERT INTO EVENT (ID, TITLE, IMG_URL) VALUES (1000, 'GrasPop Metal Meeting', 'img/1000.jpeg'); INSERT INTO BAND(ID, NAME) VALUES (1000, 'Pink Floyd'); INSERT INTO MEMBER(ID, NAME) VALUES (1001,'Queen Frankie Gross (Fania)');
Ils ont également mis dans le projet les classes java correspondant aux 3 tables Event.java Band.java et Member.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 INSERT INTO EVENT_BANDS(EVENT_ID, BANDS_ID) VALUES (1000, 1000); INSERT INTO BAND_MEMBERS(BAND_ID, MEMBERS_ID) VALUES (1000,1001);
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 public class Event { @Id @GeneratedValue(strategy= GenerationType.AUTO) private Long id; private String title; private String imgUrl; @OneToMany(fetch=FetchType.EAGER) private Set<Band> bands; private Integer nbStars; private String comment; +getter et setters }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 @Entity public class Band { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String name; @OneToMany(fetch=FetchType.EAGER) private Set<Member> members; +getters et settersMon exercice consiste à récupérer les événements qui ont au moins un groupe contenant un membre ayant le nom passé en paramètre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @Entity public class Member { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; String name;
Mon problème est que dans l'etat actuel des choses les relations entre les tables Event Band et Member semblent pas/mal modélisé car quand je récupère les events via un "Select e from Event" le resultat ne contient pas les band associé à l'event et lorsque je fais une jointure "Select e from Event e inner join Band b Inner join Member m" je ne reçois aucun résultat.
J'ai essayé de modéliser la table EVENT_BANDS via une annotation jointable mais quand je le fais j'ai cette erreur :
"a FOREIGN KEY constraint already exists on the set of columns: FKR606QG1GT3QH7R1ATB7I9K7MH in statement [alter table event_bands add constraint FKr606qg1gt3qh7r1atb7i9k7mh foreign key (event_id) references event]"
Est-ce que vous savez comment je dois faire pour modéliser la table EVENT_BANDS(EVENT_ID, BANDS_ID) ?
Partager