PDA

View Full Version : Problem with getHibernateTemplate().find()


Lijin
Jun 17th, 2006, 01:07 AM
Hi,

Im working on my first spring Application. I hav encountered a problem with getHibernateTemplate().find().

My query is

String sQry = " from Patient p where p.sPatientId=?";
List resultList = getHibernateTemplate().find(sQry,sPatientFullId);

or

String sQry = " from Patient p where p.sPatientFullId=?";
List resultList = getHibernateTemplate().find(sQry,sPatientFullId, Hibernate.STRING);

but a exception is throwing..


org.springframework.web.util.NestedServletExceptio n: Request processing failed; nested exception is org.springframework.orm.hibernate.HibernateQueryEx ception: query must begin with SELECT or FROM: 6 [6]; nested exception is net.sf.hibernate.QueryException: query must begin with SELECT or FROM: 6 [6]
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:408)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:350)
javax.servlet.http.HttpServlet.service(HttpServlet .java:689)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)


root cause

org.springframework.orm.hibernate.HibernateQueryEx ception: query must begin with SELECT or FROM: 6 [6]; nested exception is net.sf.hibernate.QueryException: query must begin with SELECT or FROM: 6 [6]
org.springframework.orm.hibernate.SessionFactoryUt ils.convertHibernateAccessException(SessionFactory Utils.java:595)
org.springframework.orm.hibernate.HibernateAccesso r.convertHibernateAccessException(HibernateAccesso r.java:353)
org.springframework.orm.hibernate.HibernateTemplat e.execute(HibernateTemplate.java:369)
org.springframework.orm.hibernate.HibernateTemplat e.delete(HibernateTemplate.java:954)
org.springframework.orm.hibernate.HibernateTemplat e.delete(HibernateTemplate.java:939)
com.iris.emr.patient.data.hibernate.HibernatePatie ntDao.deletePatient(HibernatePatientDao.java:24)
com.iris.emr.patient.services.impl.PatientServiceI mpl.deletePatient(PatientServiceImpl.java:16)
com.iris.emr.patient.services.soap.client.ClientCo ntroller.handleRequest(ClientController.java:86)
org.springframework.web.servlet.mvc.SimpleControll erHandlerAdapter.handle(SimpleControllerHandlerAda pter.java:45)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:797)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:727)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:396)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:350)
javax.servlet.http.HttpServlet.service(HttpServlet .java:689)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)


root cause

net.sf.hibernate.QueryException: query must begin with SELECT or FROM: 6 [6]
net.sf.hibernate.hql.ClauseParser.token(ClausePars er.java:84)
net.sf.hibernate.hql.PreprocessingParser.end(Prepr ocessingParser.java:142)
net.sf.hibernate.hql.ParserHelper.parse(ParserHelp er.java:30)
net.sf.hibernate.hql.QueryTranslator.compile(Query Translator.java:149)
net.sf.hibernate.hql.QueryTranslator.compile(Query Translator.java:138)
net.sf.hibernate.impl.SessionFactoryImpl.getQuery( SessionFactoryImpl.java:294)
net.sf.hibernate.impl.SessionImpl.getQueries(Sessi onImpl.java:1562)
net.sf.hibernate.impl.SessionImpl.find(SessionImpl .java:1533)
net.sf.hibernate.impl.SessionImpl.find(SessionImpl .java:1521)
net.sf.hibernate.impl.SessionImpl.delete(SessionIm pl.java:1668)
net.sf.hibernate.impl.SessionImpl.delete(SessionIm pl.java:1654)
org.springframework.orm.hibernate.HibernateTemplat e$27.doInHibernate(HibernateTemplate.java:961)
org.springframework.orm.hibernate.HibernateTemplat e.execute(HibernateTemplate.java:364)
org.springframework.orm.hibernate.HibernateTemplat e.delete(HibernateTemplate.java:954)
org.springframework.orm.hibernate.HibernateTemplat e.delete(HibernateTemplate.java:939)
com.iris.emr.patient.data.hibernate.HibernatePatie ntDao.deletePatient(HibernatePatientDao.java:24)
com.iris.emr.patient.services.impl.PatientServiceI mpl.deletePatient(PatientServiceImpl.java:16)
com.iris.emr.patient.services.soap.client.ClientCo ntroller.handleRequest(ClientController.java:86)
org.springframework.web.servlet.mvc.SimpleControll erHandlerAdapter.handle(SimpleControllerHandlerAda pter.java:45)
org.springframework.web.servlet.DispatcherServlet. doDispatch(DispatcherServlet.java:797)
org.springframework.web.servlet.DispatcherServlet. doService(DispatcherServlet.java:727)
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:396)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:350)
javax.servlet.http.HttpServlet.service(HttpServlet .java:689)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)

Will u help me please?

:confused:

Arjen Poutsma
Jun 17th, 2006, 03:10 AM
You'd better ask this on the Data Access forum (http://forum.springframework.org/forumdisplay.php?f=27).

Lijin
Jun 17th, 2006, 06:59 AM
thxs frined

Costin Leau
Jun 18th, 2006, 06:40 AM
I think this is a subtle problem with HB 2 parser - if you specify a property of your bean inside your query (p.sPatientId=?) it will require also a select:
"SELECT p FROM Patient p where p.sPatientFullId=?"

Lijin
Jun 19th, 2006, 03:20 AM
thxs for ur reply. I tried but failed. :(
the error is pasted below
org.springframework.web.util.NestedServletExceptio n: Request processing failed; nested exception is org.springframework.orm.hibernate.HibernateQueryEx ception: query must begin with SELECT or FROM: 6 [6]; nested exception is net.sf.hibernate.QueryException: query must begin with SELECT or FROM: 6 [6]
org.springframework.web.servlet.FrameworkServlet.p rocessRequest(FrameworkServlet.java:408)
org.springframework.web.servlet.FrameworkServlet.d oGet(FrameworkServlet.java:350)
javax.servlet.http.HttpServlet.service(HttpServlet .java:689)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)


root cause

org.springframework.orm.hibernate.HibernateQueryEx ception: query must begin with SELECT or FROM: 6 [6]; nested exception is net.sf.hibernate.QueryException: query must begin with SELECT or FROM: 6 [6]
org.springframework.orm.hibernate.SessionFactoryUt ils.convertHibernateAccessException(SessionFactory Utils.java:595)

Costin Leau
Jun 19th, 2006, 04:06 AM
Turn showSQL to true and see what query hibernate tries to generate internally - the query might be altered somewhere along the way.

namkee
Aug 23rd, 2007, 03:50 AM
i think this exception is from configuration of query parser..

check ur hibernate config..

don't u config
query.factory_class = org.hibernate.hql.classic.ClassicQueryTranslatorFa ctory

ClassicQueryTranslatorFactory can't parsing ur query..


i romve that config.. it work well..:D