- This topic has 8 replies, 2 voices, and was last updated 19 years, 2 months ago by rzn7z7.
-
AuthorPosts
-
rzn7z7MemberI’m a newbie to hibernate and followed the Database Explorer and Hibernate tutorial to learn. I tweaked the tutorial in order to use a DB2 8.1 database and created a mapping of a table called Sdsalutn. Life was good until I used HQL to query for all instances of the Sdsalutn class from w/in my SalutationService class:
Query query = session.createQuery(“from Sdsalutn”);
which threw a net.sf.hibernate.exception.SQLGrammarException (stack trace below)
I did get the following SQL-like query working so all’s not lost:
Query query = session.createSQLQuery(“SELECT {salutn.*} FROM MYPERSN.SDSALUTN {salutn}”,”salutn”,Sdsalutn.class);
So what’s wrong w/ this simple HQL?….config info – Windows XP, Eclipse 3.0.1, MyEclipse 3.8.4
thnx,
gmjava.lang.RuntimeException: net.sf.hibernate.exception.SQLGrammarException: Could not execute query
at com.db2.hibernate.SalutationService.getList(SalutationService.java:216)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:121)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:536)
Caused by: net.sf.hibernate.exception.SQLGrammarException: Could not execute query
at net.sf.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:59)
at net.sf.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:30)
at net.sf.hibernate.impl.SessionImpl.convert(SessionImpl.java:4110)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1556)
at net.sf.hibernate.impl.QueryImpl.list(QueryImpl.java:39)
at com.db2.hibernate.SalutationService.getList(SalutationService.java:210)
… 31 more
Caused by: com.ibm.db2.jcc.c.SqlException: DB2 SQL error: SQLCODE: -204, SQLSTATE: 42704, SQLERRMC: DGIMYPRS.SDSALUTN
at com.ibm.db2.jcc.c.cw.e(cw.java:1490)
at com.ibm.db2.jcc.c.cw.a(cw.java:1100)
at com.ibm.db2.jcc.b.bd.h(bd.java:138)
at com.ibm.db2.jcc.b.bd.a(bd.java:42)
at com.ibm.db2.jcc.b.r.a(r.java:31)
at com.ibm.db2.jcc.b.bs.g(bs.java:149)
at com.ibm.db2.jcc.c.cw.l(cw.java:1080)
at com.ibm.db2.jcc.c.cx.bc(cx.java:1554)
at com.ibm.db2.jcc.c.cx.d(cx.java:1983)
at com.ibm.db2.jcc.c.cx.T(cx.java:422)
at com.ibm.db2.jcc.c.cx.executeQuery(cx.java:405)
at net.sf.hibernate.impl.BatcherImpl.getResultSet(BatcherImpl.java:88)
at net.sf.hibernate.loader.Loader.getResultSet(Loader.java:875)
at net.sf.hibernate.loader.Loader.doQuery(Loader.java:269)
at net.sf.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:133)
at net.sf.hibernate.loader.Loader.doList(Loader.java:1033)
at net.sf.hibernate.loader.Loader.list(Loader.java:1024)
at net.sf.hibernate.hql.QueryTranslator.list(QueryTranslator.java:854)
at net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1553)
… 33 more
Riyad KallaMemberJust use session.find(“from Sdsalutn”);
This section is handy in the Hib docs: http://www.hibernate.org/hib_docs/reference/en/html/manipulatingdata.html#manipulatingdata-querying
rzn7z7Membersame exception – net.sf.hibernate.exception.SQLGrammarException – same stack trace…..doesn’t like that HQL
Riyad KallaMemberPost the contents of your generated hbm.xml file for this class (Sdsalutn).
rzn7z7Member<?xml version=”1.0″?>
<!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD 2.0//EN”
“http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd” ><!– DO NOT EDIT: This is a generated file that is synchronized –>
<!– by MyEclipse Hibernate tool integration. –>
<!– Created Fri Aug 05 14:00:51 EDT 2005 –>
<hibernate-mapping package=”com.db2.hibernate”><class name=”Sdsalutn” table=”SDSALUTN”>
<id name=”cSalutn” column=”C_SALUTN” type=”java.lang.String”>
<generator class=”native”/>
</id><property name=”xSalutn” column=”X_SALUTN” type=”java.lang.String” not-null=”true” />
<property name=”iLogonAdd” column=”I_LOGON_ADD” type=”java.lang.String” not-null=”true” />
<property name=”tStmpAdd” column=”T_STMP_ADD” type=”java.util.Date” not-null=”true” />
<property name=”iLogonUpd” column=”I_LOGON_UPD” type=”java.lang.String” />
<property name=”tStmpUpd” column=”T_STMP_UPD” type=”java.util.Date” />
</class></hibernate-mapping>
Riyad KallaMemberHmm my Hibernate is rusty, what does your hibernate.cfg.xml file look like?
rzn7z7Member<?xml version=’1.0′ encoding=’UTF-8′?>
<!DOCTYPE hibernate-configuration PUBLIC
“-//Hibernate/Hibernate Configuration DTD 2.0//EN”
“http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd”><!– DO NOT EDIT: This is a generated file that is synchronized –>
<!– by MyEclipse Hibernate tool integration. –>
<hibernate-configuration><session-factory>
<!– properties –>
<property name=”connection.username”>XXXXX</property>
<property name=”connection.url”>jdbc:db2://cldlr25.cldc.chrysler.com:11540/asd21</property>
<property name=”dialect”>net.sf.hibernate.dialect.DB2Dialect</property>
<property name=”connection.password”>XXXXX</property>
<property name=”connection.driver_class”>com.ibm.db2.jcc.DB2Driver</property><!– mapping files –>
<mapping resource=”com/db2/hibernate/Sdsalutn.hbm.xml”/></session-factory>
</hibernate-configuration>
Riyad KallaMemberMy last suggestion is to try and fully qualify the class name in your query:
“find com.db2.hibernate.Sdsalutn”if that doesn’t work, check with the hibernate forums, I’m kicking myself because I think this has to be something rediculously simple, I’m just not seeing it now.
rzn7z7Memberi’ve already tried full package path w/ same results……i agree, it seems too simple….HQL “from <class>” is, as I understand it, like an SQL “select * from <table>”, which is about as basic as it gets, and if this doesn’t work – oy!!…….i’ll check other forums, appreciate the help
gm
-
AuthorPosts