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 :

Colonne virtuelle en fonction du contexte


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut Colonne virtuelle en fonction du contexte
    Bonjour,

    voilà je ne suis pas un pro de hibernate et donc j'ai un petit soucis.

    En effet : j'ai besoin d'executer cette requête :

    (sql)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *,(SELECT count(NUM) FROM `journal` AS t WHERE t.num = j.num) AS ETAT_MODIFIED FROM `journal` AS j WHERE etat = "FINISHED"
    que j'ai porté en NamedQueri :

    (hibernate)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT j,(SELECT COUNT(t.num) FROM Journal t WHERE j.num = t.num) AS ETAT_MODIFIED FROM Journal j WHERE j.etat = 'FINISHED' ORDER BY j.num

    Le première (sql) fonctionne très bien avec mysql, le seconde semble être acceptée, mais je reçois une exception
    javax.servlet.ServletException: non-HTTP request or response
    Alors je pense que le fait que finalement la colonne ETAT_MODIFIED, n'est pas une colonne "physique" de ma table, elle est créé par la requête de tout pièce.

    Ce qui apporte 2 problèmes :

    - comment je déclare ce champ ? (le truc du genre "@Basic(optional = false) @Column(name = "NUM") private int num;")
    - comment faire pour que cette colonne soit optionnelle ? et oui, et n'existe que pour cette NamedQuerie, et pas pour les autres....


    Je ne sais pas si c'est très clair, mais en tout cas merci d'avance.

  2. #2
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    Bon c'est bon, en fait mon problème venait du cast du résultat venant de hibernate, en fait il me retourne bien une liste de couple de Journal et de Long (le seconde étant bien ma colonne "virtuelle" ajoutée)

    Il a donc fallut que j'utilise cette NamedQuery comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Query q = em.createNamedQuery("Journal.findAllNonActive");
     
    ArrayList<Tuple<Journal, Long>> resList = new ArrayList<Tuple<Journal, Long>>();
     
    for(Object e : q.getResultList())
    {
         Object[] t = (Object[])e;
         resList.add(new Tuple<Journal, Long>((Journal)t[0], (Long)t[1]));
    }
     
    return resList;
    (Tuple étant une classe à moi)

    Merci tout de même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/06/2007, 13h38
  2. Réponses: 3
    Dernier message: 30/05/2007, 16h52
  3. Réponses: 4
    Dernier message: 31/10/2006, 19h03
  4. Réponses: 15
    Dernier message: 22/07/2005, 09h49
  5. Requête à plusieurs colonnes avec la fonction COUNT
    Par zigune dans le forum Langage SQL
    Réponses: 2
    Dernier message: 18/11/2004, 10h43

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