*
The moose likes Object Relational Mapping and the fly likes Difference in session.createQuery() and session.createSqlQuery() Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Databases » Object Relational Mapping
Bookmark "Difference in session.createQuery() and session.createSqlQuery()" Watch "Difference in session.createQuery() and session.createSqlQuery()" New topic
Author

Difference in session.createQuery() and session.createSqlQuery()

Ramesh Kumar Swarnkar
Ranch Hand

Joined: Sep 15, 2003
Posts: 84
Hi,
Can someone please assist me to gunderstand the core difference between esession.createQuery() and session.createSqlQuery(). When I run this following code it gives error


final String queryString = " Select c.tradingName,c.contactName from Client c where c.clientId=111";
final Session session = HibernateSessionFactory.getCurrentSession();
List q = (session.createQuery(queryString)).list();
Iterator it = q.iterator();
while (it.hasNext()) {
System.out.println(" *************** while executing query "+it.next());
}
return q;


it gives error:-

Caused by: org.hibernate.hql.ast.QuerySyntaxException: expecting IDENT, found '*' near line 1, column 11 [ Select c.* from com.rbsfm.clientvaluations.objects.Client c where c.clientId=111]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
at org.hibernate.hql.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:258)
at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:157)
at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)


But while I replace the session.createQuery() by session.createSqlQuery() it works fine. Why ??

thanks
RK
Paul Sturrock
Bartender

Joined: Apr 14, 2004
Posts: 10336

createQuery creates a query usign HQL, createSQLQuery creates a query using SQL. Normally you would not call createSQLQuery unless you had some functionality you absolutely could not do in HQL (or via Criteria).

Looking at that bit of code and the error you see - are you sure its that bit that is causing the error? The query you are really running looks like it is:


JavaRanch FAQ HowToAskQuestionsOnJavaRanch
 
wood burning stoves
 
subject: Difference in session.createQuery() and session.createSqlQuery()
 
Similar Threads
Max length of a query
simple question
Left join query
subquery sql to hql
i have a Errors in Hibernate Query