2016-10-05 8 views
-1

こんにちは、私はnoobプログラマです。hibernate sqlクエリを作成できません。

私は今、休止状態を学習しています。そして、私、私は冬眠するために、このSQLクエリを作成することはできません

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 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(); 

は、私は私は、PostgreSQL 9.4を使用して5.0を休止しています。このSQL ... を試してみてください。 *

ベルとして

+0

PostgreSQLには、バグとは考えられないバグがあります。バグは、NULLが100以上のデータ型のうちの1つを持ちますが、ほとんどの間では変換できないバグです。可能な限り 'setParameter(something、null)'の使用を避けてください。データベースの切り替えを計画している場合を除きます。 – coladict

答えて

0

1)代わりのcreateQuery私に使用createSQLQueryを助けてください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からcreateSQLQueryがネイティブDBクエリであるのに対し、HQLクエリです。

注:クエリが1行にあることを確認してください。そうでない場合は、コンカット演算子( '+')を追加する必要があります。

関連する問題