使用hibernate的this.getSession().createSQLQuery(sql).list();方法查詢數據時出現查到的數據和想象的不一致,很是郁悶,詭異


今天 使用hibernate的this.getSession().createSQLQuery(sql).list();方法查詢數據時出現查到的數據和想象的不一致的問題,郁悶我很長一段時間

執行的方法代碼如下:

public List<?> findKaoHe4Data(String startDay, String endDay, String depIds) {
        String sql = "SELECT t.dep_id,t.memo,"
                + "sum(case ISNUMERIC(t.chanl) when 1 then cast(t.chanl as float) else 0 end) as chanl,"
                + "sum(case ISNUMERIC(t.cail) when 1 then cast(t.cail as float) else 0 end) as cail,"
                + "sum(case ISNUMERIC(t.dianf) when 1 then cast(t.dianf as float) else 0 end) as dianf "
                + "FROM team_settle t  JOIN department d on d.dep_id=t.dep_id  JOIN department pd on d.pdep_id = pd.dep_id WHERE d.pdep_id IN ("
                + depIds + ") and settle_date >='" + startDay + "' and settle_date<='" + endDay + "' and t.memo<>'' "
                + "GROUP BY t.dep_id,t.memo,pd.show_order,d.show_order ORDER BY pd.show_order,d.show_order";
        return this.getSession().createSQLQuery(sql).list();
    }


截取到組合好的sql語句如下:

View Code
SELECT
        t.dep_id,
        t.memo,
        sum(case ISNUMERIC(t.chanl) 
            when 1 then cast(t.chanl as float) 
            else 0 
        end) as chanl,
        sum(case ISNUMERIC(t.cail) 
            when 1 then cast(t.cail as float) 
            else 0 
        end) as cail,
        sum(case ISNUMERIC(t.dianf) 
            when 1 then cast(t.dianf as float) 
            else 0 
        end) as dianf 
    FROM
        team_settle t  
    JOIN
        department d 
            on d.dep_id=t.dep_id  
    JOIN
        department pd 
            on d.pdep_id = pd.dep_id 
    WHERE
        d.pdep_id IN (
            '402882eb369b1a0601369b288b8e0006','402882eb369b1a0601369b28d3360007','402882eb369b1a0601369b293e820008','402882eb369b1a0601369b29efe10009','402882eb369b1a0601369b2a25b6000a','402882eb369b1a0601369b2a5e1b000b'
        ) 
        and settle_date >='2013-01-01' 
        and settle_date<='2013-01-16' 
        and t.memo<>'' 
    GROUP BY
        t.dep_id,
        t.memo,
        pd.show_order,
        d.show_order 
    ORDER BY
        pd.show_order,
        d.show_order

拿到navcat中執行以下代碼,得到的是15條記錄

但是java類中 的list集合卻顯示的是9條記錄

為什么兩處的查詢結果不一致呢,找不到原因,以致使用hibernate  show_sql功能,在控制台打印的sql,

拿到navcat中執行以下仍然是15條記錄,瘋了,瘋了,崩潰了,啥子原因...

瘋了之后,把meyeclipse關閉了重啟,還是不好使,瘋了,瘋了。。。

就在忽然間,看到了在navcat中執行查詢的數據庫是服務器的數據庫,然而在項目中連接的數據庫是本地的數據庫,

忽然間我仰天大笑,仰天大笑,原來是這原因,瘋了瘋了

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM