ユーザーが次のフィールドのいずれかで検索できる高度な検索の簡単なページを開発しようとしています
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」は DB からフェッチされたすべての結果を格納します。
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(条件を1つだけ指定)に基づいて検索すると、レコードが取得されます。ユーザーがすべての情報 (rollno、firstname、lastname、dob) を入力するか、rollno 以外のフィールドを入力すると、レコードが取得されません。
どこが間違っているのか誰にも教えてもらえますか?