Criteria API is a facility given by Hibernate to the folks, who are not comfortable with SQL or doesn't like to write that ;). It has a several methods to prepare an SQL statement. Although, its very powerful and rich, but sometimes you have to go with SQL/HQL way when things are more sophisticated and deem out of reach of Criteria API.
Now Query, here its very ambiguous. Are you talking about HQL, or javax.persistence.Query?