I am working on a Spring-MVC project in which I am using Hibernates Criteria functionality for search. Currently, for testing I am trying out the search code with disjunction. Even with it, I am getting null back from the criteria query. I have added 5000 random rows and if nothing atleast the boolean values match in the database. But I don't have results. Any ideas?
Code :
@Override
public List<Student> getRecommendedStudents(Host host) {
Session session = this.sessionFactory.getCurrentSession();
Criteria andCriteria = session.createCriteria(Student.class);
Disjunction and = Restrictions.disjunction();
if ((host.getCity() != null) && (!(host.getCity().isEmpty()))) {
and.add(Restrictions.ilike("city", host.getCity()));
}
if ((host.getGender() != null) && (!(host.getGender().isEmpty()))) {
and.add(Restrictions.ilike("gender", host.getGender()));
}
if ((host.getMotherTongue() != null) && (!(host.getMotherTongue().isEmpty()))) {
and.add(Restrictions.ilike("motherTongue", host.getMotherTongue()));
}
if (host.getOtherLanguages() != null) {
if (!(host.getOtherLanguages().isEmpty())) {
and.add(Restrictions.in("otherLanguages", host.getOtherLanguages()));
}
}
and.add(Restrictions.eq("drivingLicense", host.isDrivingLicense()));
and.add(Restrictions.eq("smoker", host.isWeSmoke()));
and.add(Restrictions.eq("previouslyAuPair", host.isPreviousAuPair()));
and.add(Restrictions.eq("willingToWork", host.isHouseWork()));
and.add(Restrictions.eq("workForSingleParent", host.isSingleParent()));
and.add(Restrictions.eq("workingForDisabledChild", host.isChildAssistance()));
andCriteria.add(and);
return andCriteria.list();
}
Database random data screenshot :
I don't have any errors, just no results. Thank you.
Edit
Model files for Student and Host :
@Entity
@Table(name="student")
public class Student implements UserDetails,Serializable{
private static final GrantedAuthority USER_AUTH = new SimpleGrantedAuthority("ROLE_STUDENT");
@Id
@Column(name="studentid")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "student_seq_gen")
@SequenceGenerator(name = "student_seq_gen",sequenceName = "student_seq")
private Long studentid;
@Column(name = "email",columnDefinition = "character varying")
private String email;
@Column(name = "password",columnDefinition = "character varying")
private String password;
@Column(name = "firstname",columnDefinition = "character varying")
private String firstName;
@Column(name = "lastname",columnDefinition = "character varying")
private String lastName;
@Column(name = "registrationdate",columnDefinition = "timestamp without time zone")
private Timestamp registrationDate;
@Column(name = "profilevisits",columnDefinition = "integer default 0")
private int profileVisits;
@Column(name = "sentapplications",columnDefinition = "integer default 0")
private int sentapplications;
@Column(name = "recievedapplication",columnDefinition = "integer default 0")
private int recievedApplications;
@Column(name = "country",columnDefinition = "character varying")
private String country;
@Column(name = "city",columnDefinition = "character varying")
private String city;
@Column(name = "gender",columnDefinition = "character varying")
private String gender;
@Column(name = "role",columnDefinition = "character varying")
private String role;
@Column(name = "spam_count",columnDefinition = "integer default 0")
private int spamCount;
@Column(name = "socialregister",columnDefinition = "boolean default false")
private boolean socialRegistrationFlag;
@Column(name = "socialnetwork",columnDefinition = "character varying")
private String socialNetwork;
@Column(name = "agency_flag",columnDefinition = "boolean default false")
private boolean agencyFlag;
@Column(name = "account_enabled",columnDefinition = "boolean default true")
private boolean accountEnabled;
@Column(name = "street",columnDefinition = "character varying")
private String streetName;
@Column(name = "PLZ",columnDefinition = "character varying")
private String postLeitZahl;
@Column(name = "nationality",columnDefinition = "character varying")
private String nationality;
@Column(name = "birthday",columnDefinition = "date")
private Date studentBirthday;
@Column(name = "free_text",columnDefinition = "character varying")
private String freeText;
@Column(name = "phonenumber",columnDefinition = "character varying")
private String phoneNumber;
@Column(name = "mothertongue",columnDefinition = "character varying")
private String motherTongue;
@Column(name = "regionlookingfor",columnDefinition = "character varying")
private String desiredRegion;
@Column(name = "citylookingfor",columnDefinition = "character varying")
private String desiredCity;
@Column(name = "smoker",columnDefinition = "boolean default false")
private boolean smoker;
@Column(name = "willingtowork",columnDefinition = "boolean default false")
private boolean willingToWork;
@Column(name = "drivinglicense",columnDefinition = "boolean default false")
private boolean drivingLicense;
@Column(name = "workfordisabledchild",columnDefinition = "boolean default false")
private boolean workingForDisabledChild;
@Column(name = "workforsingleparent",columnDefinition = "boolean default false")
private boolean workForSingleParent;
@Column(name = "previousaupair",columnDefinition = "boolean default false")
private boolean previouslyAuPair;
@Column(name = "prep_days",columnDefinition = "integer default 0")
private int prepDays;
@Column(name = "start_date",columnDefinition = "date")
private Date startDate;
@Column(name = "vegeterian",columnDefinition = "boolean default false")
private boolean vegeterian;
@Column(name = "look_smoker",columnDefinition = "boolean default false")
private boolean lookSmoker;
@Column(name = "look_vegeterian",columnDefinition = "boolean default false")
private boolean lookVegeterian;
@Column(name = "look_for_mother_tongue",columnDefinition = "character varying")
private String lookForMotherTongue;
@ElementCollection(fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private List<String> expectedLanguages = new ArrayList<>();
@ElementCollection(fetch=FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private List<String> otherLanguages = new ArrayList<>();
@ElementCollection(fetch = FetchType.EAGER)
@Fetch(FetchMode.SUBSELECT)
private List<String> desiredCountries = new ArrayList<>();
// Getters and setters
}
Host :
@Entity
@Table(name = "host")
public class Host implements UserDetails{
private static final GrantedAuthority USER_AUTH = new SimpleGrantedAuthority("ROLE_HOST");
@Id
@Column(name="hostid")
@GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "host_seq_gen")
@SequenceGenerator(name = "host_seq_gen",sequenceName = "host_seq")
private Long hostid;
@Column(name = "firstname",columnDefinition = "character varying")
private String firstName;
@Column(name = "lastname",columnDefinition = "character varying")
private String lastName;
@Column(name = "password",columnDefinition = "character varying")
private String password;
@Column(name = "email",columnDefinition = "character varying")
private String email;
@Column(name = "role",columnDefinition = "character varying")
private String role;
@Column(name = "spam_count",columnDefinition = "integer default 0")
private int spamCount;
@Column(name = "socialregister",columnDefinition = "boolean default false")
private boolean socialRegistrationFlag;
@Column(name = "socialnetwork",columnDefinition = "character varying")
private String socialNetwork;
@Column(name = "gender",columnDefinition = "character varying")
private String gender;
@Column(name = "agency_flag",columnDefinition = "boolean default false")
private boolean agencyFlag;
@Column(name = "account_enabled",columnDefinition = "boolean default true")
private boolean accountEnabled;
@Column(name = "registration_timestamp",columnDefinition = "timestamp without time zone")
private Timestamp registrationTimeStamp;
@Column(name = "street",columnDefinition = "character varying")
private String streetName;
@Column(name = "country",columnDefinition = "character varying")
private String country;
@Column(name = "PLZ",columnDefinition = "character varying")
private String postLeitZahl;
@Column(name = "nationality",columnDefinition = "character varying")
private String nationality;
@Column(name = "birthday",columnDefinition = "date")
private Date Birthday;
@Column(name = "free_text",columnDefinition = "character varying")
private String freeText;
@Column(name = "profilevisits",columnDefinition = "integer default 0")
private int profileVisits;
@Column(name = "profileupdated")
private Timestamp profileUpdated;
@Column(name = "aboutus",columnDefinition = "character varying")
private String aboutUs;
@Column(name = "city",columnDefinition = "character varying")
private String city;
@Column(name = "phonenumber",columnDefinition = "character varying")
private String phoneNumber;
@Column(name = "children",columnDefinition = "integer default 0")
private int children;
@Column(name = "mothertongue",columnDefinition = "character varying")
private String motherTongue;
@Column(name = "wesmoke",columnDefinition = "boolean default false")
private boolean weSmoke;
@Column(name = "agerange",columnDefinition = "character varying")
private String ageRange;
@Column(name = "timeframe",columnDefinition = "character varying")
private String timeFrame;
@Column(name = "startdate")
private Timestamp startDate;
@Column(name = "enddate")
private Timestamp endDate;
@Column(name = "drivinglicense",columnDefinition = "boolean default false")
private boolean drivingLicense;
@Column(name = "housework",columnDefinition = "boolean default false")
private boolean houseWork;
@Column(name = "previousaupair",columnDefinition = "boolean default false")
private boolean previousAuPair;
@Column(name = "childassistance",columnDefinition = "boolean default false")
private boolean childAssistance;
@Column(name = "singleparent",columnDefinition = "boolean default false")
private boolean singleParent;
@Column(name = "look_smoke",columnDefinition = "boolean default false")
private boolean lookSmoke;
@Column(name = "low_age_range",columnDefinition = "integer default 0")
private int lowAgeRange;
@Column(name = "high_age_range",columnDefinition = "integer default 0")
private int highAgeRange;
@Column(name = "vegeterian",columnDefinition = "boolean default false")
private boolean vegeterian;
@Column(name = "look_vegeterian",columnDefinition = "boolean default false")
private boolean lookVegeterian;
@Column(name = "look_for_mother_tongue",columnDefinition = "character varying")
private String lookForMotherTongue;
@LazyCollection(LazyCollectionOption.FALSE)
@Fetch(FetchMode.SUBSELECT)
@ElementCollection
private List<String> expectedLanguages = new ArrayList<>();
@LazyCollection(LazyCollectionOption.FALSE)
@ElementCollection
@Fetch(FetchMode.SUBSELECT)
private List<String> expectedCountries = new ArrayList<>();
@LazyCollection(LazyCollectionOption.FALSE)
@ElementCollection
@Fetch(FetchMode.SUBSELECT)
private List<String> otherLanguages = new ArrayList<>();
// Getters and setters
}
Aucun commentaire:
Enregistrer un commentaire