我是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条记录。
我在这里缺少什么?
任何帮助都会非常感激!
答案 0 :(得分:0)
如果您没有看到任何格式错误的查询错误,则该参数似乎无法正确绑定。
要进行调试,我会在设置参数后打印出该行的SQL语句。这是在设置参数后可以看到SQL的唯一方法,以便将其与Toad进行比较。
你的绑定文件是什么样的?也许你的ID有不同的名称,所以它无法根据名称找到它。尝试使用参数的顺序值进行绑定,就像测试一样。
这可能会提供一些想法:http://www.mkyong.com/hibernate/hibernate-parameter-binding-examples/
祝你好运!我们都去过那里:)
答案 1 :(得分:0)
尝试时会发生什么:
(Number) query.getSingleResult();
您的查询不会返回列表,而是返回计数。
祝你好运。