2014-02-13 39 views
0

在我的應用程序中,我使用JPA(使用Hibernate作爲JPA提供程序)打DB。當我嘗試運行查詢時,系統向我提供空的結果列表。但是當我運行相同查詢(從日誌中獲取)的SQL表示法時,它運行良好,併爲我提供了正確的結果。JPQL不給結果

有人可以幫助我理解這裏可能出現的問題嗎?

+1

您可以讓JPA記錄其生成的SQL以驗證它是否確實運行相同的查詢。對於Hibernate,你可以使用''。此外,雙擊/三重檢查您的應用程序是否正在查詢手動查詢相同的數據庫。 – mthmulders

+0

我通過將hibernate.show_sql設置爲true來獲得SQL字符串。它運行良好,給了我想要的結果。另外,我確定我正在訪問相同的數據庫,因爲我正在使用我自己的用戶訪問數據庫,並且沒有在其他任何數據庫上創建用戶.-) –

+4

我會更進一步:嘗試設置log4jdbc以查看填充了所有參數的100%保證正確的SQL查詢。在基礎上,它將是一個普通的JDBC查詢,它將在數據庫中進行拍攝,所以您不可能得到不同的結果集在兩個不同的環境中運行相同的查詢。 – Gimby

回答

1

該問題可能與參數值有關。你是否使用任何需要提供者進行推理的類型參數(如enum)?我已經看到一個複雜的JPQL查詢,Hibernate 3.3無法推斷實體屬性的枚舉類型(數字或字符串),因爲實體屬性未使用查詢中的實體別名限定(entityAttribute改爲的alias.entityAttribute)。枚舉被設置爲序列化形式的參數。就像@Gimby所說的那樣,你可以檢查完整的Hibernate日誌來查看設置爲參數的實際值。

+0

非常感謝,問題在於參數值,我的下拉列表中有一個空格,由於jquery只讀取了一半的值。我嘗試了p6spy並得到了答案。再次感謝。 –