无法使用类型编号为where的条件从数据库检索行

时间:2018-07-24 11:29:07

标签: java sql hibernate oracle11g

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

eid(VARCHAR 20)numOfUnit(数字15,2)paidAmt(数字15,4)paidUnit(数字15,6)

-------------------------------- ----------- ------------ ----------- -----------< / em>-----------< em>------------------------------------------

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)吗?

1 个答案:

答案 0 :(得分:1)

这是推测性的,但我认为将numOfUnitpaidAmtpaidUnit字段与字符串文字进行比较并不正确,而实际上这些列是数字。尝试将它们与数字进行比较:

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运行相应的原始查询。