2016-05-19 10 views
0

ich unten die Daten, die ich aus der Datenbank Hibernate NamedQueryMerge Daten nach Datum

TXN_ID END_DATE 
---------- ------------ 
     121 15-JUN-16 
     122 15-JUN-16 
     123 16-MAY-16 

Jede Zeile Daten unter Verwendung geholt können Speicher in Java Object-Klasse sein. Nun möchte ich Daten abhängig vom END_DATE kombinieren. Wenn END_DATE gleich sind, dann füge TXN_ID-Daten zusammen.

Aus dem obigen Datenausgang wäre:

TXN_ID  END_DATE 
---------- ------------ 
121|122 15-JUN-16 
123  16-MAY-16 

ich dieses Programm in Java tun mag. Was ist das einfache Programm dafür?

+2

zu erhalten, was Sie bisher versucht hatte .. ?? – Simmant

Antwort

0

Verwenden Sie die akzeptierte Funktion printMap, um die hashmap zu durchlaufen, um zu sehen, ob die Ausgabe korrekt ist.

Mit dem folgenden Code:

public static void main(String[] args) { 
    String[][] b = {{"1","15-JUN-16"},{"2","16-JUN-16"},{"3","13-JUN-16"},{"4","16-JUN-16"},{"5","17-JUN-16"}}; 
    Map<String, String> mapb = new HashMap<String,String>(); 

    for(int j=0; j<b.length; j++){ 
     String c = mapb.get(b[j][1]); 
     if(c == null) 
      mapb.put(b[j][1], b[j][0]); 
     else 
      mapb.put(b[j][1], c+" "+b[j][0]); 
    } 
    printMap(mapb); 
} 

Sie erhalten die folgende Ausgabe:

13-JUN-16 = 3 
16-JUN-16 = 2 4 
17-JUN-16 = 5 
15-JUN-16 = 1 

Ich denke, das Ihr Problem lösen.

0

Hibernate Mit Ihnen Abfrageergebnis in einer Liste von Objekt setzen können

Query q = session.createSQLQuery(sql).addEntity(ObjDataQuery.class); 
List<ObjDataQuery> res = q.list(); 

Jetzt können Sie einen hashmap zu Speicher Endergebnis erstellen, diese Aufgabe zu bevölkern können Sie iterieren res

Map<String, String> finalResult= new HashMap<>(); 
for (int i=0; i<res.size(); i++){ 
    if (finalResult.get(res.get(i).date!=null){ 
     //new element 
     finalResult.put(res.get(i).date,res.get(i).txn) 
    } else { 
     //update element 
     finalResult.put(res.get(i).date, 
         finalResult.get(res.get(i).date) + res.get(i).txn) 
    } 
} 

Ich habe es nicht durch Logik getestet, sollte korrekt sein.

Eine andere Möglichkeit ist es, die Suche zu starten direkt das Endergebnis (in Oracle siehe LISTAGG)