Hibernate reutrning null in call from controller. problem with annotations
Hi I am using annotations in my dispatcher and controller. but when i make a call to hibernate it is returning null from my DAO object. can you please help. I feel something wrong with the annotations i have placed in the file. help me to locate and rectify the problem
here is my code in dispatcher servlet for hibernate
Code:
<bean id="mySessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="myDataSource" />
<property name="annotatedClasses">
<list>
<value>customer.customer</value>
<value>customer.categories</value>
<value>geography.countries</value>
<value>geography.states</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.connection.autocommit">true</prop>
</props>
</property>
</bean>
<bean id="mycustomerDAO" class="customer.customerDAOImpl">
<property name="sessionFactory" ref="mySessionFactory"/>
</bean>
Here is my DAO implementation code
Code:
import geography.*;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.ModelAttribute;
@Repository("mycustomerDAO")
public class customerDAOImpl implements customerDAO {
private HibernateTemplate hibernateTemplate;
@Autowired
public void setSessionFactory(SessionFactory sessionFactory)
{
this.hibernateTemplate = new HibernateTemplate(sessionFactory);
}
@Override
public void savecustomer(customer customer) {
hibernateTemplate.saveOrUpdate(customer);
}
@Override
@SuppressWarnings("unchecked")
public List<customer> listcustomer() {
return hibernateTemplate.find("from customer");
}
@Override
@Transactional
public List<countries> listCountries() {
return hibernateTemplate.find("from countries order by name");
}
@Override
public List<categories> listCategories() {
return hibernateTemplate.find("from customer_category order by name");
}
@Override
public List<states> listStates(int id) {
return hibernateTemplate.find("from states where country_id="+id+" order by name");
}
}
Here is the code i am using in controller to call this DAO implementation listCountries method
Code:
@RequestMapping("/customer.htm")
public ModelAndView customer(HttpServletRequest request,HttpServletResponse response) throws Exception
{
ModelMap modelMap = new ModelMap();
modelMap.addAttribute("customer", new customer());
modelMap.addAttribute("countries", new countries());
modelMap.addAttribute("countryList", customerDAO.listCountries());
return new ModelAndView("customer",modelMap);
}
it is throwing null pointer exception
thanks
david