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

Hibernate Java Discussion :

Probleme de Mapping


Sujet :

Hibernate Java

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Probleme de Mapping
    Salut,

    J'aimerai savoir si c'est possible de faire un mapping hibernate sur un de mes objets possedant un attribut non stocke en BD. Je precise que mon mapping est fait via annotations.
    Par example avoir quelque chose de la sorte.

    Pour la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select *, monsuperCalcul AS distance from offer o having distance <= 5000
    J'aimerai mapper mon objet "Offer" en lui affectant l'attribut "distance" non present en BD et donc (@Transient).


    Voici le code que j'utilise sans succes, (l'attribut distance n'est pas affecte)

    Q
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query query = sessionFactory.getCurrentSession().createSQLQuery(sqlquery).addEntity(Offer.class);

    Merci

    Desole pour les accents mais je suis en qwerty

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 951
    Points : 4 376
    Points
    4 376
    Par défaut
    Citation Envoyé par Deaimel Voir le message
    Salut,

    J'aimerai savoir si c'est possible de faire un mapping hibernate sur un de mes objets possedant un attribut non stocke en BD. Je precise que mon mapping est fait via annotations.
    Par example avoir quelque chose de la sorte.

    Pour la requete suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select *, monsuperCalcul AS distance from offer o having distance <= 5000
    J'aimerai mapper mon objet "Offer" en lui affectant l'attribut "distance" non present en BD et donc (@Transient).


    Voici le code que j'utilise sans succes, (l'attribut distance n'est pas affecte)

    Q
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Query query = sessionFactory.getCurrentSession().createSQLQuery(sqlquery).addEntity(Offer.class);

    Merci

    Desole pour les accents mais je suis en qwerty
    un @Transient est un champ "calculé" côté client, si vous voulez ramenez du serveur un champ qui est le résultat d'un calcul sur le serveur, vous devez créer une VIEW et mapper l'objet @Entity sur cette VIEW comme sur une TABLE.
    Et pour la colonne correspondant au champ calculé il faudra une annotation @Column avec "insertable = false, updatable = false"
    pour éviter que ce champ ne se retrouve dans les INSERT et les UPDATE générés.

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci pour la piste ca devrai m'aider.
    Par contre avec les annotations, je ne peut pas mapper un meme objet a la fois sur la table et sur la vue si ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 951
    Points : 4 376
    Points
    4 376
    Par défaut
    Citation Envoyé par Deaimel Voir le message
    Merci pour la piste ca devrai m'aider.
    Par contre avec les annotations, je ne peut pas mapper un meme objet a la fois sur la table et sur la vue si ?
    NON.

    Par contre, avoir les 2 mapping actifs avec 2 @Entity l'un pour la table, l'autre pour la vue, dans une même application, nécessite un peu plus de réflexion côté gestion des PKs et des caches…
    Fortement non recommandé si vous ne savez pas où vous mettez les pieds.

  5. #5
    Membre chevronné
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Points : 1 806
    Points
    1 806
    Par défaut
    Le plus simple d'utilisation serait probablement de faire une jointure : tu déclares ton objet sur la table, et tu lui joins un objet Distance qui est défini sur la vue (et qui n'a que 2 attributs : l'identifiant de l'objet, et la distance).

    EDIT : ou alors tu déclares l'attribut en updatable=false et tu le définis par une formule. C'est plus simple et plus élégant.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/07/2006, 14h45
  2. [Hibernate] Problème de mapping ?
    Par n@n¤u dans le forum Hibernate
    Réponses: 3
    Dernier message: 13/06/2006, 08h45
  3. Problem de Map et de List
    Par Roming22 dans le forum C++
    Réponses: 5
    Dernier message: 29/05/2006, 11h29
  4. [hibernate] probleme de mapping un-vers-plusieurs
    Par Elmilouse dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/04/2006, 13h37
  5. Un petit probleme de map()
    Par cryptorchild dans le forum Langage
    Réponses: 2
    Dernier message: 04/12/2005, 13h00

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