首页 > 解决方案 > 无法使用类型编号的 where 条件从数据库中检索行

问题描述

我有数据库表 Employee,它包含以下字段。

eid(VARCHAR 20)numOfUnit(编号 15,2)paidAmt(编号 15,4)paidUnit(编号 15,6)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _ _ _ - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _ _ _ - - - - - - - - - - -- - - - - - - -

AB1001 0 0 0

我正在尝试在java中执行以下代码。但它没有返回任何东西。

List <Employee> emplist = new ArrayList<Employee>(session.createQuery(
                     "from Employee where "                         
                    + " eid='AB1001' and numOfUnit='0' and paidAmt='0' and paidUnit='0'").list());
                System.out.println("emp size:: "+emplist.size());

Pojo 类字段定义:

private String eid;
              private Double numOfUnit;
              private Double paidAmt;
              private Double paidUnit;

我不知道我上面的查询有什么问题。我们需要在我的 where 条件下给出十进制值(0.0)吗?

标签: javasqlhibernateoracle11g

解决方案


numOfUnit这是推测性的,但在我看来,将、paidAmt和字段与字符串文字进行比较并不合适,而paidUnit实际上这些列是数字的。尝试将它们与数字进行比较:

List <Employee> emplist = new ArrayList<Employee>(session.createQuery(
                 "from Employee where "                         
                + "eid = 'AB1001' and numOfUnit = 0 and paidAmt = 0 and paidUnit = 0").list());
System.out.println("emp size:: "+emplist.size());

如果上面运行了,但仍然生成一个空列表,那么接下来要检查的是直接针对 Oracle 运行相应的原始查询。


推荐阅读