Bonjour à tous,
Contexte:
J'utilise NHibernate 1.0.x assimilable a Hibernate 2.1.
Les classes :
J'ai choisit de mapper Individu et Societe avec join-subclass (donc 3 tables en bdd).
Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class Personne { public int Id; public string Nom; } // Individu: Personne physique public class Individu: Personne { public string Prenom; } // Societe: Personne morale public class Societe: Personne { public string FormeJuridique }
Tout est ok, la config NHibernate, les fichiers de mapping, je peux créer, modifier, supprimer... tout baigne.
But
Je désire faire une recherche de Personne avec comme critères :
Problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part Nom = "toto" OR Prenom = "titi" OR FormeJuridique = "tutu"
Avec Session.CreateCriteria() sur la classe Personne, il me dit qu'il ne connait pas la pas la propriété Prenom (ni FormeJuridique).
Pourtant, si je lui demande que des Personnes avec Nom = "toto", il me retournera aussi bien des individus que des société ayant ce nom.
Question
Peut-on faire une recherche sur un type de base (Personne) en faisant un/des test sur une propriété d'une des classes enfants ?
Autrement dit, suis-je le seul à vouloir chercher des personnes (individu, société, ...) avec des critères que certains descendant n'ont pas ?
D'avance, comme me dise pas que c'est logique. Car pourquoi alors hibernante nous ramenne complétement un Individu quand je ne lui demande que des personnes. On trouve ça génial, et ça l'est d'ailleurs, et on dit que c'est du polymorphisme. Mais pourtant, la propriété "Prenom" n'est pas connu de la classe "Personne".
Merci d'avance.
Partager