I have a query like:
WHERE user_id in (SELECT user_id FROM mars_india.user where vendor_id=16);
Well... first you'll need to understand that you dont't have to use a subquery to get the same information.
Try this query:
SELECT lxu.* FROM mars_india.leave_x_user lxu LEFT JOIN mars_india.user miu ON lxu.user_id = miu.user_id WHERE miu.vendor_id=16
It should yield the same result as your query.
The JOIN statement is the magic. In simple words: it lets the two tables behave as one table. So now you can query this joined table with your vendor_id and return only the part of the joined table as a result that belogs to your "leave_x_user" table.
See, you only need one query with one restriction to get the same data.
That's what you are basically doing by using this criteria query.
In order to learn the syntax of the criteria query, take a look here: https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/querycriteria.html
If you want more specific information please post your domain model (the classes mapped to the tables).
Happy coding! :D