hello, i am as new as new gets to webapp development. i am trying to put together a simple application using the spring framework and hibernate 2.1 for persistance. i got the app up and running on my tomcat server using the framework. I then tried to integrate hibernate into it and now it won't work. outside of the server when i run some test on my hibernate methods they work just like i want them to work( or as they should according the book i am reading -hibernate , a developers notebook-). however when i deploy it to the server i get a net.sf.hibernate.exception.SQLGrammarException: Could not execute query ...error. below is the code that i think pertains to this problem. please help.
springapp-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<!--
- Application context definition for "springapp" DispatcherServlet.
-->
<beans>
<!-- Controller for the initial "Hello" page -->
<bean id="springappController" class="web.SpringappController"/>
<!-- Validator and Form Controller for the "Price Increase" page -->
<bean id="priceIncreaseValidator" class="bus.PriceIncreaseValidator"/>
<bean id="priceIncreaseForm" class="web.PriceIncreaseFormController">
<property name="sessionForm"><value>true</value></property>
<property name="commandName"><value>priceIncrease</value></property>
<property name="commandClass"><value>bus.PriceIncrease</value></property>
<property name="validator"><ref bean="priceIncreaseValidator"/></property>
<property name="formView"><value>priceincrease</value></property>
<property name="successView"><value>hello.htm</value></property>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>org.hsqldb.jdbcDriver</value></property>
<property name="url">
<value>jdbc:hsqldb:/projects/springapp_idea/springapp/db/my_db</value>
</property>
<property name="username"><value>sa</value></property>
<property name="password"><value></value></property>
</bean>
<bean id="prodManager" class="bus.ProductManager"/>
<bean id="pst" class="hh.persistance"/>
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename"><value>messages</value></property>
</bean>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.htm">springappController</prop>
<prop key="/priceincrease.htm">priceIncreaseForm</prop>
</props>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.JstlView</value>
</property>
<property name="prefix"><value>/WEB-INF/jsp/</value></property>
<property name="suffix"><value>.jsp</value></property>
</bean>
</beans>
persistance.java
package hh;
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.Configuration;
import java.util.*;
import bus.product;
public class persistance
{
private Transaction tx = null;
private Session session;
private SessionFactory sessionFactory;
private Configuration config;
private void set_up() throws Exception
{
config = new Configuration();
config.addClass(product.class);
sessionFactory = config.buildSessionFactory();
session = sessionFactory.openSession();
}
public List all_products() throws HibernateException ,Exception
{
set_up();
return session.find("from product");
// Query query = session.getNamedQuery("all_data");
//return query.list();
}
public void close_session() throws Exception
{
session.close();
}
public void write_products(List L) throws Exception
{
System.out.println("GOT INTO WRITE_PRODUCTS");
set_up();
try
{
for (ListIterator iter = L.listIterator();iter.hasNext() ; )
{
System.out.println("GOT INTO WRITE_PRODUCTS for loop");
tx = session.beginTransaction();
product pr = (product)iter.next();
System.out.println("saving "+pr.getDescription()+" with price "+pr.getPrice()+" to database");
session.update(pr);
}
// We're done; make our changes permanent
tx.commit();
}
catch (Exception e)
{
if (tx != null)
{
// Something went wrong; discard all partial changes
tx.rollback();
}
}
}
ProductManager.java
package bus;
import java.io.Serializable;
import java.util.ListIterator;
import java.util.*;
import java.sql.Types;
import hh.*;
import net.sf.hibernate.cfg.Configuration;
import net.sf.hibernate.*;
public class ProductManager implements Serializable
{
private List products;
private persistance persist = new persistance();
// Create a configuration based on the properties file we've put
// in the standard place.
// Tell it about the classes we want mapped, taking advantage of
// the way we've named their mapping documents.
// Get the session factory we can use for persistence
public List get_products()throws Exception
{
products = persist.all_products();
persist.close_session();
return products;
}
public void increase_price(int pct) throws Exception
{
List li = persist.all_products();
System.out.println("i am about to increase the price by "+pct+"%");
for (ListIterator iter = li.listIterator();iter.hasNext() ; )
{
product p = (product)iter.next();
double X = p.getPrice();
double inc = (((double)pct)/100)* p.getPrice() + p.getPrice();
p.setPrice(inc);
System.out.println(p.getDescription()+" went from $" + X +" to $"+p.getPrice());
}
persist.write_products(li);
persist.close_session();
}
}
the full error as seen on page
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Could not execute query
org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:402)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:346)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
net.sf.hibernate.exception.SQLGrammarException: Could not execute query
net.sf.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:69)
net.sf.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
net.sf.hibernate.impl.SessionImpl.convert(SessionImpl.java:4131)
net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1557)
net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1531)
net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:1523)
hh.persistance.all_products(persistance.java:31)
bus.ProductManager.get_products(ProductManager.java:31)
web.SpringappController.handleRequest(SpringappController.java:39)
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
org.springframework.web.servlet.FrameworkServlet.serviceWrapper(FrameworkServlet.java:386)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:346)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.9 logs.
|