Bonjour,

Je cherche à faire une classe héritant de HashSet, (et donc un interface héritant de Set), pour mes entités.

(Précision j'utilise JPA pour la persistence, et l'application est déployée sur un serveur glassfish.)

Je m'explique j'ai comme classes:
  • Client
  • Contact (extends Personne)
  • ChargeAaffaire (extends Personne)


Ces classes ont une propriété:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
private Set<Affaire> affaires;
Or la classe Affaire est une classe Mère.
OffrePrix et Commande héritent de Affaire.
Expertise hérite de OffrePrix.

J'ai donc tous les types d'affaire dans ma propriété affaires, ce qui est voulu pour le moment.

Maintenant j'aimerais pouvoir limiter les résultats selon certains critères:
OffresEnCours, OffresDeclinee, OffresPasseEnCommande, OffresASuivre, CommandesEnCours, CommandeLivrees....

J'ai donc créé Une classe Affaires qui hérite de HashSet et dans laquelle je défini les différents getters:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
public class Affaires extends HashSet<Affaire>{
 
public Set<Affaire> getAffaireEnCours(){}
public Set<Commande> getCommandeEnCours(){}
public Set<Expertise> getExpertiseEnCours(){}
public Set<OffrePrix> getOffrePrixEnCours(){}
public Set<OffrePrix> getOffrePrixDeclinee(){}
public Set<OffrePrix> getOffresEnCommande(){}
public Set<OffrePrix> getOffresASuivre(){}
Ceci dans l'objectif de pouvoir obtenir ces affaires "filtrées" dans ma page jsf par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<h:dataTable value="#{clientMB.client.offreEnCours}"....
J'ai essayé et cela ne veut pas se déployer. J'obtiens cette erreur durant le déployement:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Exception Description: The target entity of the relationship attribute [affaires] on the class [class com.enregistrementAffaires.entites.ChargeAffaire] cannot be determined.  When not using generics, ensure the target entity is defined on the relationship mapping.
Si je comprend bien, c'est parce que dans la classe ChargeAffaire, la propriété qui contient la collection n'est pas générique, et donc qu'il ne sait pas faire le "mappedBy = "chargeAffaire"" sur ma classe Affaires. Exact?
Donc comment puis-je y remédier?

Et sinon que me conseillerez-vous de faire pour pouvoir obtenir/extraire les différents types d'affaire(Design Pattern, architecture,....)? Ou bien cela ne doit pas du tout être fait de cette façon mais plutôt de définir les Query dans mon stateless Bean? Je suis ouvert à toutes solutions intéressantes.

Merci beaucoup