2010-08-05 6 views
0

J'ai la requête suivante dans ma demande: vrésultat de la requête Hibernate

public List getLocation(String id) { 
    List object = null; 
    try { 
     org.hibernate.Transaction tx = session.beginTransaction(); 
     Query q = session.createQuery("from Entrancestolocations as EL left join EL.entrances as E left join EL.location as L where L = " + id); 

     object = (List) q.list(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return object; 
} 

Le résultat de cette requête est une liste. Entrancestolocations est une table avec une clé étrangère à l'emplacement et aux entrées. Je n'ai aucune idée de comment accéder aux éléments de cette liste sans utiliser les index car je ne sais pas quel est le type d'objets que je traite. La mise en œuvre est foiré - comment le faire correctement? Quel type d'objet dois-je utiliser pour stocker les données de différentes tables de la base de données afin de pouvoir les utiliser dans une application? Merci pour votre aide!

+0

-vous dire un objet autre que la liste, comme ArrayList ou la carte? –

+0

Oui. Donc plus tard, je peux l'utiliser de la façon suivante: Object.name – Enzomatric

Répondre

0

J'ai travaillé pendant un mois avec Hibernate seulement, mais je pense que vous devriez peut-être utiliser une liste d'un tableau d'objets:

List<Object[]> objects = null; 

ajouter une carte: Carte myMap = new HashMap(); Par exemple, si vous souhaitez accéder aux résultats par le champ x: ajoutez simplement cela à votre requête. Par exemple, si vous souhaitez accéder aux résultats par champ x:

...CreateQuery("Select Table.x Table2.y from ..... where id = ");

essayez { org.hibernate.Transaction tx = session.beginTransaction(); Requête q = session.createQuery ("à partir de Entrancestolocations comme EL a quitté rejoindre EL.entrances comme E a quitté rejoindre EL.location comme L où L =" + id);

objects = (List<Object[]>) q.list(); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 

for(Object[] o : objects){// o[0] is each x of Table1 and o[1] is each y of Table2 
myMap[(String)o[0]] = (String)o[1]; 

}

return myMap; 

vous pouvez désormais accéder à votre carte par l'attribut x par exemple ..

+0

Il semble trop compliqué pour un scénario typique rencontré dans une application de base de données, ne pensez-vous pas? Cela ressemble à une solution rapide. – Enzomatric

Questions connexes