Как я могу получить CriteriaQuery для соединений ниже SQL - PullRequest
0 голосов
/ 10 октября 2019

Могу ли я получить 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);
...