2016-10-05 1 views
-1

Hallo ich bin ein Noob-Programmierer.ich kann nicht Hibernate SQL Abfrage

Ich lerne jetzt Hibernate. Und ich bin frustriert von

SELECT COUNT(*) FROM zipcode a 
WHERE (ISNULL(:sido , '') = '' OR a.sido = :sido) AND 
(ISNULL(:sigungu , '') = '' OR a.sigungu = :sigungu) AND 
    (ISNULL(:eupmyun , '') = '' OR a.eupmyun = :eupmyun) AND 
    (ISNULL(:roadName , '') = '' OR a.road_name = :roadName) AND 
    (ISNULL(:ri , '') = '' OR a.ri = :ri) 

ich nicht diese SQL-Abfrage machen kann in den Ruhezustand ....

Number num = (Number) session() 
       .createQuery(
         "SELECT COUNT(*) FROM ZipCode a WHERE (ISNULL(:sido , '') = '' OR a.sido = :sido) AND (ISNULL(:sigungu , '') = '' OR a.sigungu = :sigungu) AND (ISNULL(:eupmyun , '') = '' OR a.eupmyun = :eupmyun) AND(ISNULL(:roadName , '') = '' OR a.roadName = :roadName) AND(ISNULL(:ri , '') = '' OR a.ri = :ri) ") 
       .setParameter("sido", sido).setParameter("sigungu", sigungu).setParameter("eupmyun", eupmyun).setParameter("roadName", roadName).setParameter("ri", ri) 
       .list(); 

Ich versuche, diese SQL ... Ich bin mit Postgresql 9.4 und 5.0 überwintern. *

Bitte helfen Sie mir

+0

PostgreSQL hat einen Fehler, den sie nicht glauben, dass es ein Fehler ist, bei dem ein NULL einen von 100+ Datentypen hat, aber nicht zwischen den meisten konvertiert werden kann. Sie sollten so wenig wie möglich 'setParameter (etwas, null) 'verwenden, es sei denn, Sie planen den Wechsel der Datenbanken. – coladict

Antwort

0

1) Statt createQuery Verwendung createSQLQuery als bel ow:

Query query = session.createSQLQuery("SELECT COUNT(*) FROM zipcode a 
         WHERE (ISNULL(:sido , '') = '' OR a.sido = :sido) AND 
        (ISNULL(:sigungu , '') = '' OR a.sigungu = :sigungu) AND 
        (ISNULL(:eupmyun , '') = '' OR a.eupmyun = :eupmyun) AND   
        (ISNULL(:roadName , '') = '' OR a.road_name = :roadName) AND 
        (ISNULL(:ri , '') = '' OR a.ri = :ri) "); 

Number number =(Number)query.list().get(0); 

createQuery - ist eine HQL-Abfrage während createSQLQuery ist eine native db-Abfrage.

Hinweis: stellen Sie sicher, dass die Abfrage in einer Zeile ist, sonst müssen Sie ('+') concat-Operator hinzufügen.