0

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

Toad/Oracle sql 读取: select count(*) from 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 = "select count(*) from " + "fpps_owner.fee_claim_payment_lines l, fpps_owner.fee_claim_payments p " + "where " + "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 条记录。

我在这里想念什么?

任何帮助将不胜感激!

4

2 回答 2

0

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

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

你的绑定文件是什么样的?也许您的 ID 有不同的名称,因此无法根据名称找到它。尝试与参数的 order 值绑定,就像测试一样。

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

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

于 2013-02-01T05:38:51.357 回答
0

当您尝试时会发生什么:

 (Number) query.getSingleResult();

您的查询不返回一个列表,而只是一个计数。

祝你好运。

于 2013-02-01T05:40:01.417 回答