I am using following query
from A as a,B as b,C as c where a.val='1' and b.val=a.val and c.val=b.val
Now if i do follow
query.list();
what will be the output?
Also if I want to get the output of above query what else I have to do?
I am using following query
from A as a,B as b,C as c where a.val='1' and b.val=a.val and c.val=b.val
Now if i do follow
query.list();
what will be the output?
Also if I want to get the output of above query what else I have to do?
Hi this is not the right way.For this you have to write nested query Using Criteria.That will be something like as follows:
String query="from A a where a.val in (select b.val from B b where b.val in (select c.val from C c where c.val='1'))";
Criteria criteria = session.getSession().createCriteria(TableName.class);
criteria.add(Restrictions.sqlRestriction(query));
List<tableNameObj> tableNameObj=criteria.list();
Hopefully this will solve your problem.
From the Hibernate Reference Documentation:
14.2. The from clause
...
Multiple classes can appear, resulting in a cartesian product or "cross" join.
from Formula, Parameter from Formula as form, Parameter as param
So your query will return a cartesian product and if there are X matching rows in A, Y matching rows in B, Z matching rows in C, you'll get X * Y * Z results (and the product can become huge very quickly).
Be very careful with this kind of queries, they are very greedy with resources and might cause serious performance problems.