我有数据库表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)吗?
答案 0 :(得分:1)
这是推测性的,但我认为将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运行相应的原始查询。