IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NHibernate Discussion :

[NHibernate] Criteria et récupération d'une liste d'objets


Sujet :

NHibernate

  1. #1
    Membre habitué Avatar de goute
    Homme Profil pro
    Développeur éclectique
    Inscrit en
    Novembre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur éclectique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 224
    Points : 159
    Points
    159
    Par défaut [NHibernate] Criteria et récupération d'une liste d'objets
    Bonjour,

    En ce moment je suis en train d'essayer de récupérer seulement certains champs particuliers d'une classe/table.
    Pour se faire j'utilise Criteria avec les projections.

    Voici le mapping de la classe/table dont je veux récupérer certaines données :

    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
    21
     
    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" default-lazy="false">
     
      <class name="Business.Model.Origination.OrigineElement, Business.Production" table="SystemTableOrigination.TElementOrigine"  >
        <cache usage="read-write" />
        <id name="Id" column="Id" type="System.Int32" unsaved-value="0">
          <generator class="native"/>
        </id>
        <property name="Number" column="Numero" not-null="true" type="System.String"/>
        <property name="Description" column="Description" not-null="false" type="System.String"/>
        <property name="Observation" column="Observation" not-null="false" type="System.String"/>
        <property name="Poids" column="Poids" type="System.String" not-null="false"/>
        <property name="Dvd" column="CDDVD" type="System.String" not-null="false"/>
     
        <bag name="DonorTaker" lazy="false" inverse="true">
          <key column="ElementOrigineId"/>
          <one-to-many class="Business.Model.DonorTaker.DonorTaker, Business.Production"/>
        </bag>
      </class>
    </hibernate-mapping>
    Voici la classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        [DataContract]
        public class OrigineElement : Business.Model.Production.Common.EntityBase, IElement
        {
            [DataMember] public virtual string Number { get; set; }
            [DataMember] public virtual string Description { get; set; }
            [DataMember] public virtual string Observation { get; set; }
            [DataMember] public virtual IList<Business.Model.DonorTaker.DonorTaker> DonorTaker { get; set; }
            [DataMember] public virtual string Poids { get; set; }
            [DataMember] public virtual string Dvd { get; set; }
    }
    Voici mon code criteria qui ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ICriteria crit = session.CreateCriteria(OrigineElement)
                    .Add(Projections.Alias(Projections.Property("Number"), "Number"))
                    .Add(Projections.Alias(Projections.Property("Description"), "Description"))
                    .Add(Projections.Alias(Projections.Property("DonorTaker"), "DonorTaker"))
                    .Add(Restrictions.Eq("Id", "50"));
                    crit.SetResultTransformer(
                    new NHibernate.Transform.AliasToBeanResultTransformer(OrigineElement));
                    result = (OrigineElement)crit.UniqueResult();
    Alors le resultat me retourne bien un objet avec le bon numéro, la bonne déscription par contre ma liste d'objet de type DonorTaker est null alors quelle devrait contenir plusieurs objet.

    C'est la que je cale, si quelqu'un aurait quelques informations...

    Merci d'avance !!

    Bye
    Moins tu vas vite, plus tu vas moins vite!

  2. #2
    Membre habitué Avatar de goute
    Homme Profil pro
    Développeur éclectique
    Inscrit en
    Novembre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur éclectique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2008
    Messages : 224
    Points : 159
    Points
    159
    Par défaut
    En faite ce n'est pas possible car une projection est forcement constituée d'une seule requête. Je pense que c'est possible en utilisant les sous requêtes mais je n'ai pas encore réussi , si quelqu'un aurait quelque chose à rajouter... une idée...
    Moins tu vas vite, plus tu vas moins vite!

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 273
    Points : 2 202
    Points
    2 202
    Par défaut
    Oui tu peux utiliser Linq ou QueryOver dans NH3. En même temps, un Get(50) donnerai le même résultat...

    Je ne suis pas certain de comprendre pourquoi tu ne veux pas utiliser l'entité...s

    Ou option 2 , tu utilises les entity name, et tu crées une entité read only (mutable=false), avec les propriétés qui t'intéressent, ce qui te permettra de faire ça de façon très clean et performante, car si il s'agit de consulter, tu pourras utiliser une session sans état.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2013, 15h43
  2. Réponses: 1
    Dernier message: 11/01/2013, 12h16
  3. problème de récupération d'une liste d'objet au niveau des DAO
    Par yness dans le forum Persistance des données
    Réponses: 1
    Dernier message: 25/04/2011, 20h57
  4. Récupération d'une liste déroulante
    Par artotal dans le forum Langage
    Réponses: 1
    Dernier message: 29/10/2006, 00h29
  5. Récupération d'une liste de structures Oracle via Java
    Par MagikMarcel dans le forum Langage
    Réponses: 2
    Dernier message: 29/06/2006, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo