2017-03-13 3 views
0

auf Karte Ich habe EntitätHibernate wählen nur einige Felder und Mapping

@Entity 
@Table(name = "TEST") 
public class TEST implements Serializable { 
    ... 

    private String f1; 
    private String f2; 
    private String f3; 
    .... 

ich erstellen müssen wählen abd nur f1, f2 Felder erhalten.

public Map<Stirng, String> getTestF1AndF2() { 
Map<String, String> map = new HashMap<>(); 
     try { 
      Session mySession = HibernateUtil.getSessionFactory().openSession(); 
      Query q = mySession.createSQLQuery("SELECT f1, f2 from TEST"); 
      //??????????????? 
      //fill map 
      mySession.close(); 
      return map; 
     } catch (Exception e) { 
      LOG.log(Level.INFO, e.getMessage()); 
     } 
     return null; 
    } 

Ich kann myBatis oder andere Bibliotheken verwenden, aber ich brauche nur Ruhezustand verwenden. Wie kann ich diese Zuordnung erreichen?

+0

Warum möchten Sie f1 und f2 auswählen? Wenn Sie das Testobjekt abrufen, haben Sie bereits alle von f1, f2 und f3 – Simon

+0

Ich fand die Lösung http://stackoverflow.com/a/21757841/5620472 – user5620472

Antwort

1

Verwendung unter HQL Abfrage die Ergebnisse als Map erhalten:

Query query = session.createQuery("select new map(f1 as f1, f2 as f2) from Test"); 
List<Map<String,String>> result = query.list(); 

auf diese ähnliche Position Siehe:

How to fetch hibernate query result as associative array of list or hashmap

Wenn Sie SQL-Abfrage verwenden möchten, dann verwenden:

Query query1 = session.createSQLQuery("select sname as name, grp as grp from students").setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); 

List<Map<String,String>> result = query.list(); 

Beachten Sie, dass die Abfragen Liste o zurückgibt f Werte, also Ergebnis ist List of Map Elemente in ihm.