2016-07-01 9 views
0

Nun, ich habe wirklich einfache Methode, die einige Codes zurückgeben sollte ... und es tut, aber die Reihenfolge von funktioniert nicht.Reihenfolge von zeigt nicht im Protokoll

private List<Code> get(String qualifier, ZonedDateTime validAt) { 
    return em.createQuery(
       "select c\n" 
      + " from Code c\n" 
      + " where c.qualifier = :qualifier\n" 
      + " and c.validFrom <= :validAt)\n" 
      + " and c.validUntil > :validAt)\n" 
      + " order by c.sequence, c.code\n", 
      com.service.code.impl.model.Code.class) 
     .setParameter("qualifier", qualifier) 
     .setParameter("validAt", validAt) 
     .getResultList().stream() 
     .map(converter::convert) 
     .collect(Collectors.toList()); 
} 

Wenn ich die Methode aufrufen log ich die Aussage, und das ist, wie es aussieht:

07:59:44,158 INFO [stdout] (default task-15) Hibernate: 
07:59:44,158 INFO [stdout] (default task-15)  select 
07:59:44,158 INFO [stdout] (default task-15)   code0_.id as id1_0_, 
07:59:44,159 INFO [stdout] (default task-15)   code0_.changed_at as changed_at2_0_, 
07:59:44,159 INFO [stdout] (default task-15)   code0_.changed_by as changed_by3_0_, 
07:59:44,159 INFO [stdout] (default task-15)   code0_.created_at as created_at4_0_, 
07:59:44,159 INFO [stdout] (default task-15)   code0_.version as version5_0_, 
07:59:44,159 INFO [stdout] (default task-15)   code0_.code as code6_0_, 
07:59:44,163 INFO [stdout] (default task-15)   code0_.description as description7_0_, 
07:59:44,163 INFO [stdout] (default task-15)   code0_.qualifier as qualifier8_0_, 
07:59:44,163 INFO [stdout] (default task-15)   code0_.sequence as sequence9_0_, 
07:59:44,163 INFO [stdout] (default task-15)   code0_.valid_from as valid_from10_0_, 
07:59:44,163 INFO [stdout] (default task-15)   code0_.valid_until as valid_until11_0_ 
07:59:44,163 INFO [stdout] (default task-15)  from 
07:59:44,163 INFO [stdout] (default task-15)   code code0_ 
07:59:44,163 INFO [stdout] (default task-15)  where 
07:59:44,163 INFO [stdout] (default task-15)   code0_.qualifier=? 
07:59:44,164 INFO [stdout] (default task-15)   and code0_.valid_from<=? 

Wie Sie die Reihenfolge sehen kann fehlt. Wie kann das möglich sein?

+0

Ich würde sagen, dass Hibernate die auf eigene tut Sortierung (das heißt in Java, nicht in DB). –

+0

Auch die Zeile "+" und c.validUntil> validAt) \ n "' fehlen. Sind Sie sicher, dass dies der ausgeführte Code ist? Entfernen Sie auch '\ n' von den Zeilen. Es ist nicht notwendig – Jens

+2

Es gibt zwei schließende Klammern in Ihrem Statment ohne öffnende Klammern – Jens

Antwort

2

Sie sollten ) von den letzten zwei Zeilen wie diese entfernen;)

private List<Code> get(String qualifier, ZonedDateTime validAt) { 
    return em.createQuery(
       "select c\n" 
      + " from Code c\n" 
      + " where c.qualifier = :qualifier\n" 
      + " and c.validFrom <= :validAt\n" 
      + " and c.validUntil > :validAt\n" 
      + " order by c.sequence, c.code\n", 
      com.service.code.impl.model.Code.class) 
     .setParameter("qualifier", qualifier) 
     .setParameter("validAt", validAt) 
     .getResultList().stream() 
     .map(converter::convert) 
     .collect(Collectors.toList()); 
} 
+0

Danke das funktioniert. Es ist seltsam, dass die Anweisung ausgeführt wird, obwohl es unnötige ')' gibt. Ich werde die Antwort in 8 Minuten annehmen ... weiß nicht, warum ich es jetzt nicht akzeptieren kann. – user489872

Verwandte Themen