Java HibernateCallback返回值,即使搜索条件不合格
我的密码有问题。如果我输入了正确的条件,假设它返回正确结果的金额为300。但是如果我输入了不合格的搜索条件,它仍然返回不正确的结果Java HibernateCallback返回值,即使搜索条件不合格,java,hibernate,hibernate-criteria,detachedcriteria,Java,Hibernate,Hibernate Criteria,Detachedcriteria,我的密码有问题。如果我输入了正确的条件,假设它返回正确结果的金额为300。但是如果我输入了不合格的搜索条件,它仍然返回不正确的结果 @Override public Page<ApPayment> searchPayment(final String searchCriteria, final PageSetting pageSetting) { HibernateCallback<Page<ApPayment>> paymentCallBack =
@Override
public Page<ApPayment> searchPayment(final String searchCriteria,
final PageSetting pageSetting) {
HibernateCallback<Page<ApPayment>> paymentCallBack = new HibernateCallback<Page<ApPayment>>() {
@Override
public Page<ApPayment> doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria = session.createCriteria(ApPayment.class);
if(!searchCriteria.isEmpty() && StringFormatUtil.isNumeric(searchCriteria)) {
Integer paymentNo = Integer.valueOf(searchCriteria);
Double amount = Double.valueOf(searchCriteria);
criteria.add(Restrictions.or(Restrictions.like(ApPayment.FIELD.paymentNumber.name(), paymentNo), Restrictions.eq(ApPayment.FIELD.amount.name(), amount)));
}
Page<ApPayment> payments = getAll(criteria, pageSetting);
for (ApPayment payment: payments.getData()) {
--some codes--
}
return payments;
}
};
return getHibernateTemplate().execute(paymentCallBack);
}
@覆盖
公共页面搜索支付(最终字符串搜索条件,
最终页面设置(页面设置){
HibernateCallback paymentCallBack=新的HibernateCallback(){
@凌驾
公共页面doInHibernate(会话)
抛出HibernateeException、SQLException{
条件=session.createCriteria(ApPayment.class);
如果(!searchCriteria.isEmpty()&&StringFormatUtil.isNumeric(searchCriteria)){
整数paymentNo=Integer.valueOf(searchCriteria);
Double amount=Double.valueOf(搜索条件);
criteria.add(Restrictions.or(Restrictions.like(ApPayment.FIELD.paymentNumber.name(),paymentNo),Restrictions.eq(ApPayment.FIELD.amount.name(),amount));
}
页面付款=getAll(标准、页面设置);
对于(ApPayment付款:payments.getData()){
--一些代码--
}
归还款项;
}
};
返回getHibernateTemplate().execute(paymentCallBack);
}
提前感谢。您所说的不合格是什么意思?任何与我的付款记录不匹配的值。例如,payment1(paymentNo=12345,amount=500)。如果我输入“opii9090”,它将不返回任何内容。在我的例子中,它仍然返回payment1数据。您能告诉我们
getAll(criteria,pageSetting)
的作用吗?这部分看起来非常可疑:Integer paymentNo=Integer.valueOf(searchCriteria);Double amount=Double.valueOf(搜索条件)代码>使用相同的字符串并解析两个不同的值。