2013-02-01 71 views
0

我是Hibernate的新手,所以如果有些顯而易見的話,但這已經是非常非常漫長的一天了。我正在嘗試在Hibernate和Toad/Oracle中創建並執行一個簡單的查詢。Hibernate createSQLQuery和Toad SQL查詢返回不同的結果 - 參數問題?

蟾蜍/的Oracle SQL讀取: 選擇 COUNT(*) 從 fpps_owner.fee_claim_payment_lines升, fpps_owner.fee_claim_payments p 其中 l.fee_claim_payment_id = p.fee_claim_payment_id和 p.claim_index = 87167895

以上返回10條記錄,這是正確的

以下Java代碼返回0條記錄,這是不正確的 String sLinesAvailab LE = + 「從SELECT COUNT(*)」 「fpps_owner.fee_claim_payment_lines升,fpps_owner.fee_claim_payments P」 + 「其中」 + 「l.fee_claim_payment_id = p.fee_claim_payment_id和p.claim_index =:ID」;

Query qLinesAvailable = em.createNativeQuery(sLinesAvailable); 
qLinesAvailable.setParameter("id", "87167895");  // fails 
qLinesAvailable.setParameter("id", 87167895); // fails 


List<Object> out = (List<Object>) qLinesAvailable.getResultList(); 
BigDecimal x = (BigDecimal) out.get(0); 

返回0條記錄。使用.getSingleResult()也會返回0條記錄。

我在這裏錯過了什麼?

任何幫助將非常感謝!

回答

0

如果您沒有看到任何格式錯誤的查詢錯誤,則看起來參數綁定不正確。

爲了進行調試,在設置參數之後,我會打印出SQL語句行。這是您設置參數後才能看到SQL的唯一方式,以便將其與Toad進行比較。

你的綁定文件是什麼樣的?也許你在ID中有一個不同的名字,所以它不能根據名字找到它。嘗試綁定參數的訂單值,就像測試一樣。

這可能給一些想法:http://www.mkyong.com/hibernate/hibernate-parameter-binding-examples/

祝您好運!我們都在那裏:)當您嘗試

0

會發生什麼:

(Number) query.getSingleResult(); 

您的查詢沒有返回一個列表,而只是一個計數。

祝你好運。