Hi,
I am writing a web app with the following technologies:
Java 1.4.2
Tomcat 5.0.28
JSF 1.1_01
Spring 1.2
Hibernate 3
PostGreSql 8.0.4
I'm having trouble retrieving items from a database table called TENANTS in the PUBLIC schema. Below are the details.
Hibernate version:
Hibernate 3
Mapping documents:
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.dv.ocs.hibernate.Tenant" table="TENANTS">
<id name="tenantId" column="TENANT_ID">
<generator class="increment"/>
</id>
<property name="tenantName" column="TENANT_NAME" not-null="true" unique="true"/>
<property name="tenantAddressLine1" column="TENANT_ADDR_LINE1" not-null="true" unique="false"/>
<property name="tenantAddressLine2" column="TENANT_ADDR_LINE2" not-null="false" unique="false"/>
<property name="tenantAlias" column="TENANT_ALIAS" not-null="false" unique="true"/>
<property name="tenantStateProvinceRegion" column="STATE_PROVINCE_REGION" not-null="true" unique="false"/>
<property name="tenantPostalCode" column="POSTAL_CODE" not-null="true" unique="false"/>
<property name="tenantCountry" column="COUNTRY" not-null="true" unique="false"/>
<property name="tenantPhoneNumber" column="PHONE_NUMBER" not-null="true" unique="false"/>
<property name="tenantFaxNumber" column="FAX_NUMBER" not-null="false" unique="false"/>
<property name="tenantCity" column="CITY" not-null="true" unique="false"/>
</class>
</hibernate-mapping>
Code between sessionFactory.openSession() and session.close():This is managed by Spring. Below is my applicationConfig.xml file for Spring
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!-- Datasource definition -->
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/ocs_dev1</value>
</property>
</bean>
<!-- Hibernate SessionFactory Configuration -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource"/>
</property>
<!-- Hibernate Mapping Files -->
<property name="mappingResources">
<list>
<value>com/dv/ocs/hibernate/Tenant.hbm.xml</value>
<value>com/dv/ocs/hibernate/User.hbm.xml</value>
</list>
</property>
<!-- Hibernate Properties -->
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">validate</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.default_schema">public</prop>
</props>
</property>
</bean>
<!-- Hibernate Interceptor -->
<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- Transaction Management -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<!-- Hibernate Beans -->
<bean id="tenantDAO" class="com.dv.ocs.hibernate.dao.TenantDAOImpl">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<!-- JSF Handler Beans -->
<bean id="tenantHandler" class="com.dv.ocs.jsf.handlers.TenantHandler">
<property name="tenantDAO">
<ref local="tenantDAO"/>
</property>
</bean>
</beans>
Full stack trace of any exception that occurs:Code:
java.sql.SQLException: ERROR: relation "public.tenants" does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1482)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1267)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:186)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:392)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:330)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:240)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
at org.hibernate.loader.Loader.doQuery(Loader.java:391)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:809)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:358)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:800)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:792)
at com.dv.ocs.hibernate.dao.TenantDAOImpl.getAllTenants(TenantDAOImpl.java:30)
at com.dv.ocs.jsf.handlers.TenantHandler.getTenants(TenantHandler.java:45)
at com.dv.ocs.jsf.bean.TenantsPageBean.getTenants(TenantsPageBean.java:119)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.sun.faces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:79)
at com.sun.faces.el.impl.ArraySuffix.evaluate(ArraySuffix.java:167)
at com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:151)
at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:243)
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:173)
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
at javax.faces.component.UIData.getValue(UIData.java:527)
at javax.faces.component.UIData.getDataModel(UIData.java:856)
at javax.faces.component.UIData.setRowIndex(UIData.java:379)
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:65)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:683)
at javax.faces.component.UIData.encodeBegin(UIData.java:681)
at javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:591)
at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:543)
at com.sun.faces.taglib.html_basic.DataTableTag.doEndTag(DataTableTag.java:491)
at org.apache.jsp.manager.tenants.tenants_jsp._jspx_meth_h_dataTable_0(tenants_jsp.java:1075)
at org.apache.jsp.manager.tenants.tenants_jsp._jspx_meth_h_form_3(tenants_jsp.java:943)
at org.apache.jsp.manager.tenants.tenants_jsp._jspService(tenants_jsp.java:404)
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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
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:534)
Name and version of the database you are using:Postgresql 8.0.4 running on Fedora Core 3 machine.
The generated SQL (show_sql=true):Code:
select tenant0_.TENANT_ID as TENANT1_, tenant0_.TENANT_NAME as TENANT2_0_, tenant0_.TENANT_ADDR_LINE1 as TENANT3_0_, tenant0_.TENANT_ADDR_LINE2 as TENANT4_0_, tenant0_.TENANT_ALIAS as TENANT5_0_, tenant0_.STATE_PROVINCE_REGION as STATE6_0_, tenant0_.POSTAL_CODE as POSTAL7_0_, tenant0_.COUNTRY as COUNTRY0_, tenant0_.PHONE_NUMBER as PHONE9_0_, tenant0_.FAX_NUMBER as FAX10_0_, tenant0_.CITY as CITY0_ from public.TENANTS tenant0_>
Hibernate: select tenant0_.TENANT_ID as TENANT1_, tenant0_.TENANT_NAME as TENANT2_0_, tenant0_.TENANT_ADDR_LINE1 as TENANT3_0_, tenant0_.TENANT_ADDR_LINE2 as TENANT4_0_, tenant0_.TENANT_ALIAS as TENANT5_0_, tenant0_.STATE_PROVINCE_REGION as STATE6_0_, tenant0_.POSTAL_CODE as POSTAL7_0_, tenant0_.COUNTRY as COUNTRY0_, tenant0_.PHONE_NUMBER as PHONE9_0_, tenant0_.FAX_NUMBER as FAX10_0_, tenant0_.CITY as CITY0_ from public.TENANTS tenant0_
Debug level Hibernate log excerpt:Code:
18:10:14,421 DEBUG [org.springframework.orm.hibernate3.SessionFactoryUtils] - <Opening Hibernate Session>
2005-12-30 18:10:14,562 DEBUG [org.hibernate.impl.SessionImpl] - <opened session at timestamp: 4653035579068416>
2005-12-30 18:10:14,609 DEBUG [org.hibernate.impl.SessionImpl] - <find: from Tenant>
2005-12-30 18:10:14,609 DEBUG [org.hibernate.engine.QueryParameters] - <named parameters: {}>
2005-12-30 18:10:14,906 DEBUG [org.hibernate.hql.ast.QueryTranslatorImpl] - <parse() - HQL: from com.dv.ocs.hibernate.Tenant>
2005-12-30 18:10:14,937 DEBUG [org.hibernate.hql.ast.AST] - <--- HQL AST ---
\-[QUERY] 'query'
\-[SELECT_FROM] 'SELECT_FROM'
\-[FROM] 'from'
\-[RANGE] 'RANGE'
\-[DOT] '.'
+-[DOT] '.'
| +-[DOT] '.'
| | +-[DOT] '.'
| | | +-[IDENT] 'com'
| | | \-[IDENT] 'dv'
| | \-[IDENT] 'ocs'
| \-[IDENT] 'hibernate'
\-[IDENT] 'Tenant'
>
2005-12-30 18:10:14,937 DEBUG [org.hibernate.hql.ast.ErrorCounter] - <throwQueryException() : no errors>
2005-12-30 18:10:15,125 DEBUG [org.hibernate.hql.antlr.HqlSqlBaseWalker] - <query() << begin, level = 1>
2005-12-30 18:10:15,234 DEBUG [org.hibernate.hql.ast.FromElement] - <FromClause{level=1} : com.dv.ocs.hibernate.Tenant (no alias) -> tenant0_>
2005-12-30 18:10:15,234 DEBUG [org.hibernate.hql.antlr.HqlSqlBaseWalker] - <query() : finishing up , level = 1>
2005-12-30 18:10:15,234 DEBUG [org.hibernate.hql.ast.HqlSqlWalker] - <processQuery() : ( SELECT ( FromClause{level=1} public.TENANTS tenant0_ ) )>
2005-12-30 18:10:15,265 DEBUG [org.hibernate.hql.ast.HqlSqlWalker] - <Derived SELECT clause created.>
2005-12-30 18:10:15,296 DEBUG [org.hibernate.hql.ast.JoinProcessor] - <Using FROM fragment [public.TENANTS tenant0_]>
2005-12-30 18:10:15,296 DEBUG [org.hibernate.hql.antlr.HqlSqlBaseWalker] - <query() >> end, level = 1>
2005-12-30 18:10:15,312 DEBUG [org.hibernate.hql.ast.AST] - <--- SQL AST ---
\-[SELECT] QueryNode: 'SELECT' querySpaces (public.TENANTS)
+-[SELECT_CLAUSE] SelectClause: '{derived select clause}'
| +-[SELECT_EXPR] SelectExpressionImpl: 'tenant0_.TENANT_ID as TENANT1_' {FromElement{explicit,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=null,role=null,tableName=public.TENANTS,tableAlias=tenant0_,colums={,className=com.dv.ocs.hibernate.Tenant}}}
| \-[SQL_TOKEN] SqlFragment: 'tenant0_.TENANT_NAME as TENANT2_0_, tenant0_.TENANT_ADDR_LINE1 as TENANT3_0_, tenant0_.TENANT_ADDR_LINE2 as TENANT4_0_, tenant0_.TENANT_ALIAS as TENANT5_0_, tenant0_.STATE_PROVINCE_REGION as STATE6_0_, tenant0_.POSTAL_CODE as POSTAL7_0_, tenant0_.COUNTRY as COUNTRY0_, tenant0_.PHONE_NUMBER as PHONE9_0_, tenant0_.FAX_NUMBER as FAX10_0_, tenant0_.CITY as CITY0_'
\-[FROM] FromClause: 'from' FromClause{level=1, fromElementCounter=1, fromElements=1, fromElementByClassAlias=[], fromElementByTableAlias=[tenant0_], fromElementsByPath=[], collectionJoinFromElementsByPath=[], impliedElements=[]}
\-[FROM_FRAGMENT] FromElement: 'public.TENANTS tenant0_' FromElement{explicit,not a collection join,not a fetch join,fetch non-lazy properties,classAlias=null,role=null,tableName=public.TENANTS,tableAlias=tenant0_,colums={,className=com.dv.ocs.hibernate.Tenant}}
>
2005-12-30 18:10:15,312 DEBUG [org.hibernate.hql.ast.ErrorCounter] - <throwQueryException() : no errors>
2005-12-30 18:10:15,375 DEBUG [org.hibernate.hql.ast.QueryTranslatorImpl] - <HQL: from com.dv.ocs.hibernate.Tenant>
2005-12-30 18:10:15,375 DEBUG [org.hibernate.hql.ast.QueryTranslatorImpl] - <SQL: select tenant0_.TENANT_ID as TENANT1_, tenant0_.TENANT_NAME as TENANT2_0_, tenant0_.TENANT_ADDR_LINE1 as TENANT3_0_, tenant0_.TENANT_ADDR_LINE2 as TENANT4_0_, tenant0_.TENANT_ALIAS as TENANT5_0_, tenant0_.STATE_PROVINCE_REGION as STATE6_0_, tenant0_.POSTAL_CODE as POSTAL7_0_, tenant0_.COUNTRY as COUNTRY0_, tenant0_.PHONE_NUMBER as PHONE9_0_, tenant0_.FAX_NUMBER as FAX10_0_, tenant0_.CITY as CITY0_ from public.TENANTS tenant0_>
2005-12-30 18:10:15,375 DEBUG [org.hibernate.hql.ast.ErrorCounter] - <throwQueryException() : no errors>
2005-12-30 18:10:15,406 DEBUG [org.hibernate.jdbc.AbstractBatcher] - <about to open PreparedStatement (open PreparedStatements: 0, globally: 0)>
2005-12-30 18:10:15,406 DEBUG [org.hibernate.jdbc.ConnectionManager] - <opening JDBC connection>
2005-12-30 18:10:15,406 DEBUG [org.hibernate.SQL] - <select tenant0_.TENANT_ID as TENANT1_, tenant0_.TENANT_NAME as TENANT2_0_, tenant0_.TENANT_ADDR_LINE1 as TENANT3_0_, tenant0_.TENANT_ADDR_LINE2 as TENANT4_0_, tenant0_.TENANT_ALIAS as TENANT5_0_, tenant0_.STATE_PROVINCE_REGION as STATE6_0_, tenant0_.POSTAL_CODE as POSTAL7_0_, tenant0_.COUNTRY as COUNTRY0_, tenant0_.PHONE_NUMBER as PHONE9_0_, tenant0_.FAX_NUMBER as FAX10_0_, tenant0_.CITY as CITY0_ from public.TENANTS tenant0_>
Hibernate: select tenant0_.TENANT_ID as TENANT1_, tenant0_.TENANT_NAME as TENANT2_0_, tenant0_.TENANT_ADDR_LINE1 as TENANT3_0_, tenant0_.TENANT_ADDR_LINE2 as TENANT4_0_, tenant0_.TENANT_ALIAS as TENANT5_0_, tenant0_.STATE_PROVINCE_REGION as STATE6_0_, tenant0_.POSTAL_CODE as POSTAL7_0_, tenant0_.COUNTRY as COUNTRY0_, tenant0_.PHONE_NUMBER as PHONE9_0_, tenant0_.FAX_NUMBER as FAX10_0_, tenant0_.CITY as CITY0_ from public.TENANTS tenant0_
2005-12-30 18:10:15,406 DEBUG [org.hibernate.jdbc.AbstractBatcher] - <preparing statement>
2005-12-30 18:10:15,562 DEBUG [org.hibernate.jdbc.AbstractBatcher] - <about to close PreparedStatement (open PreparedStatements: 1, globally: 1)>
2005-12-30 18:10:15,562 DEBUG [org.hibernate.jdbc.AbstractBatcher] - <closing statement>
2005-12-30 18:10:15,609 DEBUG [org.hibernate.util.JDBCExceptionReporter] - <could not execute query [select tenant0_.TENANT_ID as TENANT1_, tenant0_.TENANT_NAME as TENANT2_0_, tenant0_.TENANT_ADDR_LINE1 as TENANT3_0_, tenant0_.TENANT_ADDR_LINE2 as TENANT4_0_, tenant0_.TENANT_ALIAS as TENANT5_0_, tenant0_.STATE_PROVINCE_REGION as STATE6_0_, tenant0_.POSTAL_CODE as POSTAL7_0_, tenant0_.COUNTRY as COUNTRY0_, tenant0_.PHONE_NUMBER as PHONE9_0_, tenant0_.FAX_NUMBER as FAX10_0_, tenant0_.CITY as CITY0_ from public.TENANTS tenant0_]>
java.sql.SQLException: ERROR: relation "public.tenants" does not exist
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1482)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1267)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:186)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:392)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:330)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:240)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:92)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:120)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1272)
at org.hibernate.loader.Loader.doQuery(Loader.java:391)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218)
at org.hibernate.loader.Loader.doList(Loader.java:1593)
at org.hibernate.loader.Loader.list(Loader.java:1577)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:395)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:844)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:809)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:358)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:800)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:792)
at com.dv.ocs.hibernate.dao.TenantDAOImpl.getAllTenants(TenantDAOImpl.java:30)
at com.dv.ocs.jsf.handlers.TenantHandler.getTenants(TenantHandler.java:45)
at com.dv.ocs.jsf.bean.TenantsPageBean.getTenants(TenantsPageBean.java:119)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at com.sun.faces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:79)
at com.sun.faces.el.impl.ArraySuffix.evaluate(ArraySuffix.java:167)
at com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:151)
at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:243)
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:173)
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:154)
at javax.faces.component.UIData.getValue(UIData.java:527)
at javax.faces.component.UIData.getDataModel(UIData.java:856)
at javax.faces.component.UIData.setRowIndex(UIData.java:379)
at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:65)
at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:683)
at javax.faces.component.UIData.encodeBegin(UIData.java:681)
at javax.faces.webapp.UIComponentTag.encodeBegin(UIComponentTag.java:591)
at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:543)
at com.sun.faces.taglib.html_basic.DataTableTag.doEndTag(DataTableTag.java:491)
at org.apache.jsp.manager.tenants.tenants_jsp._jspx_meth_h_dataTable_0(tenants_jsp.java:1075)
at org.apache.jsp.manager.tenants.tenants_jsp._jspx_meth_h_form_3(tenants_jsp.java:943)
at org.apache.jsp.manager.tenants.tenants_jsp._jspService(tenants_jsp.java:404)
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.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312)
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:130)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
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:534)
2005-12-30 18:10:15,625 WARN [org.hibernate.util.JDBCExceptionReporter] - <SQL Error: 0, SQLState: 42P01>
2005-12-30 18:10:15,625 ERROR [org.hibernate.util.JDBCExceptionReporter] - <ERROR: relation "public.tenants" does not exist>
2005-12-30 18:10:15,640 DEBUG [org.hibernate.jdbc.JDBCContext] - <after autocommit>
2005-12-30 18:10:15,640 DEBUG [org.hibernate.impl.SessionImpl] - <after transaction completion>
2005-12-30 18:10:15,640 DEBUG [org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator] - <Translating SQLException with SQLState '42P01' and errorCode '0' and message [ERROR: relation "public.tenants" does not exist]; SQL was [select tenant0_.TENANT_ID as TENANT1_, tenant0_.TENANT_NAME as TENANT2_0_, tenant0_.TENANT_ADDR_LINE1 as TENANT3_0_, tenant0_.TENANT_ADDR_LINE2 as TENANT4_0_, tenant0_.TENANT_ALIAS as TENANT5_0_, tenant0_.STATE_PROVINCE_REGION as STATE6_0_, tenant0_.POSTAL_CODE as POSTAL7_0_, tenant0_.COUNTRY as COUNTRY0_, tenant0_.PHONE_NUMBER as PHONE9_0_, tenant0_.FAX_NUMBER as FAX10_0_, tenant0_.CITY as CITY0_ from public.TENANTS tenant0_] for task [Hibernate operation: could not execute query]>
2005-12-30 18:10:15,640 DEBUG [org.springframework.orm.hibernate3.SessionFactoryUtils] - <Closing Hibernate Session>
2005-12-30 18:10:15,640 DEBUG [org.hibernate.impl.SessionImpl] - <closing session>
2005-12-30 18:10:15,640 DEBUG [org.hibernate.jdbc.ConnectionManager] - <closing JDBC connection [ (open PreparedStatements: 0, globally: 0) (open ResultSets: 0, globally: 0)]>
2005-12-30 18:10:15,640 DEBUG [org.hibernate.jdbc.JDBCContext] - <after transaction completion>
2005-12-30 18:10:15,640 DEBUG [org.hibernate.impl.SessionImpl] - <after transaction completion>
Here is the DDL used to create the table, the Tenant, TenantDAO and TenantDAOImpl java classes used to access this table.
Tenants DDLCode:
create table "public"."TENANTS"(
"tenant_id" int4 PRIMARY KEY not null,
"tenant_name" varchar(128) not null,
"tenant_addr_line1" varchar(64) not null,
"tenant_addr_line2" varchar(64),
"tenant_alias" varchar(64),
"state_province_region" varchar(128) not null,
"postal_code" varchar(32) not null,
"country" varchar(128) not null,
"phone_number" varchar(32) not null,
"fax_number" varchar(32),
"city" varchar(128) not null)
Code:
[b]Tenant.java[/b]
/**
* Default no-args constructor
*/
public Tenant() {}
// PROPERTY: tenantAddressLine1
public String getTenantAddressLine1() { return this.tenantAddressLine1; }
public void setTenantAddressLine1(String tenantAddressLine1) { this.tenantAddressLine1 = tenantAddressLine1; }
// PROPERTY: tenantAddressLine2
public String getTenantAddressLine2() { return this.tenantAddressLine2; }
public void setTenantAddressLine2(String tenantAddressLine2) { this.tenantAddressLine2 = tenantAddressLine2;}
// PROPERTY: tenantAlias
public String getTenantAlias() { return this.tenantAlias; }
public void setTenantAlias(String tenantAlias) { this.tenantAlias = tenantAlias; }
// PROPERTY: tenantCity
public String getTenantCity() { return this.tenantCity; }
public void setTenantCity(String tenantCity) { this.tenantCity = tenantCity; }
// PROPERTY: tenantCountry
public String getTenantCountry() { return this.tenantCountry; }
public void setTenantCountry(String tenantCountry) { this.tenantCountry = tenantCountry; }
// PROPERTY: tenantFaxNumber
public String getTenantFaxNumber() { return this.tenantFaxNumber; }
public void setTenantFaxNumber(String tenantFaxNumber) { this.tenantFaxNumber = tenantFaxNumber; }
// PROPERTY: tenantId
public Integer getTenantId() { return this.tenantId; }
public void setTenantId(Integer tenantId) { this.tenantId = tenantId; }
// PROPERTY: tenantName
public String getTenantName() { return this.tenantName; }
public void setTenantName(String tenantName) { this.tenantName = tenantName; }
// PROPERTY: tenantPhoneNumber
public String getTenantPhoneNumber() { return this.tenantPhoneNumber; }
public void setTenantPhoneNumber(String tenantPhoneNumber) { this.tenantPhoneNumber = tenantPhoneNumber; }
// PROPERTY: tenantPostalCode
public String getTenantPostalCode() { return this.tenantPostalCode; }
public void setTenantPostalCode(String tenantPostalCode) { this.tenantPostalCode = tenantPostalCode; }
// PROPERTY: tenantStateProvinceRegion
public String getTenantStateProvinceRegion() { return this.tenantStateProvinceRegion; }
public void setTenantStateProvinceRegion(String tenantStateProvinceRegion) { this.tenantStateProvinceRegion = tenantStateProvinceRegion; }
// Persistent Properties
protected Integer tenantId;
protected String tenantName;
protected String tenantAlias;
protected String tenantAddressLine1;
protected String tenantAddressLine2;
protected String tenantCity;
protected String tenantStateProvinceRegion;
protected String tenantPostalCode;
protected String tenantCountry;
protected String tenantPhoneNumber;
protected String tenantFaxNumber;
[b]TenantDAO.java[/b]
public interface TenantDAO
{
/**
* Will return a List containing all the Tenant objects in Persistent storage.
* @return
*/
public List getAllTenants();
/**
* Will return the Tenant object referenced by the tenantId parameter
* @param tenantId
* @return
*/
public Tenant getTenant(Integer tenantId);
/**
* Will either add a new tenant if one doesn't exist, or update an existing one
* @param tenant
*/
public void saveTenant(Tenant tenant);
/**
* Will delete the tenant
* @param tenantId
*/
public void deleteTenant(Integer tenantId);
}
[b]TenantDAOImpl.java[/b]
public class TenantDAOImpl extends HibernateDaoSupport implements TenantDAO
{
/**
* Will return a List containing all the Tenant objects in Persistent storage.
* @return
*/
public List getAllTenants()
{
final String METHODNAME = "getAllTenants()";
logger.info("Received request to retrieve all tenants.");
return getHibernateTemplate().find("from Tenant");
}
/**
* Will return the Tenant object referenced by the tenantId parameter
* @param tenantId
* @return
*/
public Tenant getTenant(Integer tenantId)
{
final String METHODNAME = "getTenant(tenantId)";
logger.info("Received requst to retrieve the following tenant, tenant id = " + tenantId);
Tenant tenant = (Tenant) getHibernateTemplate().get(Tenant.class, tenantId);
if (tenant == null)
{
throw new ObjectRetrievalFailureException(Tenant.class, tenantId);
}
return tenant;
}
/**
* Will either add a new tenant if one doesn't exist, or update an existing one
* @param tenant
*/
public void saveTenant(Tenant tenant)
{
final String METHODNAME = "saveTenant(tenant)";
logger.info("Receive request to save or update a Tenant.");
getHibernateTemplate().saveOrUpdate(tenant);
logger.info("Saved or updated the Tenant. Tenant Id = " + tenant.getTenantId());
}
/**
* Will delete the tenant
* @param tenantId
*/
public void deleteTenant(Integer tenantId)
{
final String METHODNAME = "deleteTenant(tenantId)";
logger.info("Received request to delete a Tenant with the following Tenant Id = " + tenantId);
Object tenant = getHibernateTemplate().load(Tenant.class, tenantId);
getHibernateTemplate().delete(tenant);
logger.info("Deleted tenant.");
}
// Private member variables
private Log logger = LogFactory.getLog(this.getClass());
}