我正在尝试开发一个简单的高级搜索页面,用户可以在其中使用以下任何字段进行搜索
1) Student Roll no
2) Student First name
3) Student Last name
4) Student date of birth
所有字段都在 StudentInformation 持久性类中定义。
学生信息.java
Public Class StudentInformation {
private long rollNo;
private String firstName;
private String lastName;
private Date dateOfBirth;
//getter and setters
}
我创建了一个值对象(AdvanceSearchVo.java),我在其中定义了用户输入的变量
advanceSearchVo.setRollNo
advanceSearchVo.setFirstName
advanceSearchVo.setLastName
advanceSearchVo.setDateOfBirth
在这里,我将 VO 对象传递给 DAO 层。
List<StudentInformation> getAllSearchRecords = service.getAdavanceSearchRecords(advanceSearchVo);
根据输入的值“getAllSearchRecords”存储从数据库中获取的所有结果。
在 DAO
@Override
public List<StudentInformation> getAdavanceSearchRecords(AdvanceSearchVo advanceSearchVo) {
Session session = HibernateUtil.getSessionFactory().openSession();
Criteria criteria = session.createCriteria(PersonInfoMasterDomain.class);
if(advanceSearchVo.getRollNo()!=null){
criteria.add(Restrictions.eq("rollNo",advanceSearchVo.getRollNo()));
}
if(advanceSearchVo.getFirstName()!=null){
criteria.add(Restrictions.eq("firstName",advanceSearchVo.getFirstName()));
}
if(advanceSearchVo.getLastName()!=null){
criteria.add(Restrictions.eq("lastName",advanceSearchVo.getLastName()));
}
if(advanceSearchVo.getDateOfBirth()!=null){
criteria.add(Restrictions.eq("dateOfBirth",advanceSearchVo.getDateOfBirth()));
}
}
当我根据 rollno(仅指定一个条件)进行搜索时,我得到了记录。当用户输入所有信息(即rollno、名字、姓氏和出生日期)或用户输入rollno 以外的任何字段时,我没有得到记录。
谁能告诉我哪里出错了?