Bonjour à tous,
j'ai cherché sur le forum et sur google des réponses à mes questions mais aucun de me satisfait. Donc mon problème est le suivant :
- j'ai une classe parente Alert avec 2-3 attributs qui est liée par une relation oneToMany à une classe User
- j'ai deux classes filles AlertType1 et AlertType2. AlertType1 est liée à une classe Method et AlertType2 est liée à une classe Information. J'ai créé cette notion d'héritage dans mon modèle de données pour éviter la duplication de code puisqu'en fait ces deux types d'alertes sont liées à un utilisateur :
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 @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(discriminatorType = DiscriminatorType.STRING) @DiscriminatorValue("AlertType") public class Alert { private int att1; private int att2; ... @ManyToOne User user; ... get/set ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Entity public class AlertType1 extends Alert { ... @ManyToOne Method method; ...}Bon vous allez me dire mais quel est le problème ?! Ben le problème c'est que dans User, j'ai une collection d'Alert (one-to-many) contenant à la fois des AlertType1 et AlertType2. Seulement, j'aimerais bien à partir de User pouvoir récupérer de manière distincte mes deux types d'alerts. Je ne vois pas trop comment je peux faire étant donné qu'elles sont toutes stockées en tant que classe parente :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 @Entity public class AlertType2 extends Alert { ... @ManyToOne Information info; ... }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 @Entity public class UserBean { .... @OneToMany(mappedBy="user",cascade={CascadeType.REMOVE}) private Collection<Alert> alerts = new ArrayList<Alert>(); .... }
Je ne suis pas sûr d'avoir été clair et si ça n'est pas le cas, n'hésitez pas à me demander des détails...
Cordialement.
Antoine Verger
Partager