2016-07-19 8 views
0

MySqlQuery:wie Query excute von

select count(holiday_id) 
    from holidays 
    where holiday_type_id=2 and DATEDIFF('2016-8-9',curdate())>=20 

JavaQuery:

Query OptionalholidaysQuery = 
      manager.createNativeQuery("select count(holiday_id) from Parabola.holidays" 
       + " where holiday_type_id=2 and DATEDIFF(:startdate,curdate())>=20"); 

    OptionalholidaysQuery.setParameter("startdate", "2016-8-9"); 
    List<Integer> optionalholidays = (List<Integer>) OptionalholidaysQuery.getResultList(); 
    System.out.println("Optional:" + OptionalholidaysQuery); 

Die gegebene MySql Abfrage funktioniert gut und gibt Daten, wenn ich es über Werkbank auszuführen.

Ich habe es in Java-Code angewandt, aber es gibt mir als Ergebnis

Optional: [email protected]

Bitte zeigen Sie den Fehler und vorschlagen Korrekturen.

+4

Was haben Sie erwartet, dass es gedruckt wird? Sie haben ihm gesagt, dass er das 'Query'-Objekt drucken soll, damit es genau so gedruckt wird. Wenn Sie die * Ergebnisse * ausdrucken möchten, müssen Sie stattdessen das Objekt 'optionalholidays' drucken. Es wäre auch viel einfacher, wenn Sie Ihren Code richtig formatieren. Im Moment ist es nicht die einfachste Sache zu lesen. – JonK

+0

Keine Ausnahme am [email protected] das bekomme ich im Gegenzug –

+0

Nein, das ist genau das, was der 'toString' des von' createNativeQuery (String) zurückgegebenen Objekts zurückgibt, und was Ihr ist Die Anweisung 'println' wurde angewiesen, auszudrucken. Die * Ergebnisse * sind in 'optionalen Feiertagen' enthalten, * die Sie nicht ausdrucken *. – JonK

Antwort

0

Es scheint, wie Sie Ihre queryHolder drucken statt Drucken der results.Change Code wie unten

Ihre Version

List<Integer> optionalholidays = (List<Integer>) OptionalholidaysQuery.getResultList(); 
System.out.println("Optional:"+OptionalholidaysQuery); 

Update wie folgt aus.

List<Integer> optionalholidays = (List<Integer>) OptionalholidaysQuery.getResultList(); 
for(final Integer optionalHoldiday : optionalHolidays){ 
    System.out.println("Optional:"+optionalholiday); 
} 

Dies wird Ihren optionalen Urlaub nacheinander ausdrucken. Bitte lassen Sie mich wissen, wenn Sie irgendwelche Zweifel haben.