У меня есть требование запросить несколько таблиц с использованием критериев jpa и весенней загрузки.
У меня есть четыре объекта.
class Employee {
int id;
Laptop laptopId;
Workstation wsId;
int deptId;
}
class Workstation{
int id;
int systemId;
int cubicId;
}
class Laptop{
int id;
Brand brandId;
}
class Brand{
int id;
String brandName;
}
Я хочу запросить как-
Select * From Employee,
join Employee, Laptop on laptopId=id
join Employee, Workstation on wsId=id
join Laptop, Brand on brandId=id
Where brandName='HP' & systemId='BLR04' & deptId='DEV' & cubidId='A009';
Я пытался:
SearchCriteria criteria;
@Override
private Predicatec toPredicate(Root<Employee> root,CriteriaQuery query,CriteriaBuilder builder){
Root<Employee> root = query.from(Employee.class);
Join<Employee,Laptop> j1 = root.join(Employee_.laptopId);
Join<Laptop,Brand> j2 = j1.join(Laptop_.brandId);
Join<Employee,Workstation> j3 = root.join(Employee_.wsId);
List<Predicates> list = new ArrayList();
list.add(j2.get(criteria.getKey),criteria.getValue);
list.add(j3.get(certeria.getKey),criteria.getValue);
return builder.equal(list.toArray(new Predicate[]);
}
Но это не работает, я взял ссылку от: https://community.oracle.com/thread/2488174, но, к сожалению, это не работает.Пожалуйста, помогите мне по этим вопросам.заранее спасибо.