Hibernate createSQLQuery和Toad SQL查询返回不同的结果 - 参数问题?

时间:2013-02-01 04:40:27

标签: sql hibernate jpa

我是Hibernate的新手,请原谅我,如果其中一些显而易见,但这是非常非常漫长的一天。我试图在Hibernate和Toad / Oracle中创建并执行一个简单的查询。

Toad / Oracle sql读取:     选择         计数(*)     从         fpps_owner.fee_claim_payment_lines l,         fpps_owner.fee_claim_payments p     哪里         l.fee_claim_payment_id = p.fee_claim_payment_id和         p.claim_index = 87167895

以上返回10条记录,这是正确的

以下Java代码返回0条记录,这是不正确的     String sLinesAvailable =     “从”+中选择计数(*)     “fpps_owner.fee_claim_payment_lines l,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条记录。

我在这里缺少什么?

任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:0)

如果您没有看到任何格式错误的查询错误,则该参数似乎无法正确绑定。

要进行调试,我会在设置参数后打印出该行的SQL语句。这是在设置参数后可以看到SQL的唯一方法,以便将其与Toad进行比较。

你的绑定文件是什么样的?也许你的ID有不同的名称,所以它无法根据名称找到它。尝试使用参数的顺序值进行绑定,就像测试一样。

这可能会提供一些想法:http://www.mkyong.com/hibernate/hibernate-parameter-binding-examples/

祝你好运!我们都去过那里:)

答案 1 :(得分:0)

尝试时会发生什么:

 (Number) query.getSingleResult();

您的查询不会返回列表,而是返回计数。

祝你好运。