Могу ли я получить CriteriaQuery полный синтаксический код для запроса ниже SQL:
Select * From Table1 t1
Inner JOIN Table2 T2 on T1.id = T2.id and T2.Rno = 30
Inner JOIN Table3 T3 on T3.id = T1.id
Inner JOIN Table4 T4 on T4.id = T3.id
Inner JOIN Table5 T5 on T5.id = T1.id
where T1.seg = 123 and T2.DisId = 42 and T4.Rno = 30 and T5.IsValid = 1
Попытка с нижеприведенными усилиями, но не удалось:
EntityManager entityManager = this.entityManagerFactory.createEntityManager();
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<Table1> cq = cb.createQuery(Table1.class);
Root<Table1> root = cq.from(Table1.class);
Join<Table1, Table2> var1= root.join("table2", JoinType.INNER);
Join<Table2, Table3> var2= var1.join("table3", JoinType.INNER);
Join<Table3, Table4> var3= var2.join("table4", JoinType.INNER);
Join<Table1, Table5> var4= var3.join("table5", JoinType.INNER);
cq.select(root);
cq.where(cb.and(cb.equal(root.get("seg"), 123),
cb.equal(var1.get("Rno"),30),
cb.equal(root.get("table2").get("DisId"),2),
cb.equal(root.get("table5").get("isActive"), true)));
TypedQuery<Table1> query = entityManager.createQuery(cq);