public class Company{
private Long id;
private String companyName;
private List<Employee> employees;
}
public class Employee{
private Long empid;
private String fstName;
private String lstName;
private String sal;
private Company company;
}
с использованием API-критериев Hibernate, я хочу построить следующий SQL
select compantName from company c,employee e where c.id = e.companyid and
(e.firstName like '%john%' and e.lastname like '%doe% ) or
(e.firstName like '%james%' and e.lastname like '%bond% ) or
(e.firstName like '%mike%' and e.lastname like '%adams% )
Предположим, пользовательский интерфейс может искать имя или фамилию или Sal или название компании или любую из комбинаций
Также, что более важно, пользователь может одновременно искать нескольких сотрудников.
Я придумал следующий код.Пожалуйста, предложите, каков наилучший подход для выполнения вышеуказанного требования
DetachedCriteria criteria = DetachedCriteria
.forClass(Company.class);
criteria.createAlias("employees","employees");
Disjunction or = Restrictions.disjunction();
for(Employee emp : employees){
or.add(Restrictions.and(Restrictions.ilike(
"employees.fstName",emp.getFstName(), MatchMode.ANYWHERE),
Restrictions.ilike(
"employees.lstName",emp.getLstName(), MatchMode.ANYWHERE)));
criteria.add(or);
}