2013-05-15 15 views
5
package baseDao; 

public interface BaseDao { 

    public void create(Object obj); 
    public void delete(Object obj); 
    public void update(Object obj); 
    public void get(Object obj); 
} 

package baseDao; 
import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.springframework.beans.factory.annotation.Autowired; 


public abstract class BaseDaoImpl implements BaseDao { 

    @Autowired 
    private SessionFactory usermanagementSessionFactory; 
    private Session session = usermanagementSessionFactory.getCurrentSession(); 

    /*-----------------To save an object--------------*/ 

    public void create(Object obj){ 
     session.save(obj); 
    } 

    /*-----------------To delete an object--------------*/ 


    public void delete(Object obj){ 
     session.delete(obj); 
    } 

    /*-----------------To update an object--------------*/ 

    public void update(Object obj){ 
     session.update(obj); 
    } 

    /*-----------------To find/Get an object--------------*/ 

    public void get(Object obj){ 

    } 



    protected SessionFactory getUsermanagementSessionFactory() { 
     return usermanagementSessionFactory; 
    } 


    protected void setUsermanagementSessionFactory(
      SessionFactory usermanagementSessionFactory) { 
     this.usermanagementSessionFactory = usermanagementSessionFactory; 
    } 

} 




<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
     http://www.springframework.org/schema/util 
     http://www.springframework.org/schema/util/spring-util-3.0.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/jee 
     http://www.springframework.org/schema/jee/spring-jee-3.0.xsd"> 

    <util:properties id="usermanagementHibernateProperties" location="classpath:usermanagement-hibernate.properties" /> 

    <bean id="usermanagementSessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
     <property name="dataSource" ref="usermanagementDataSource" /> 
     <property name="configLocation" value="classpath:hibernate.cfg.usermanagement.xml" /> 
     <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" /> 
     <property name="hibernateProperties" ref="usermanagementHibernateProperties" /> 
    </bean> 

    <jee:jndi-lookup id="usermanagementDataSource" jndi-name="java:usermanagementDS" /> 

    <bean id="city" class="com.ecom.data.entities.user.City"/> 
    <bean id="state" class="com.ecom.data.entities.user.State"/> 
    <bean id="country" class="com.ecom.data.entities.user.Country"/> 
    <bean id="pincodes" class="com.ecom.data.entities.user.Pincodes"/> 
    <bean id="notification" class="com.ecom.data.entities.notification.Notifications"/> 
    <bean id="notification_types" class="com.ecom.data.entities.notification.Notification_Types"/> 
    <bean id="transactions" class="com.ecom.data.entities.transaction.Transactions"/> 
    <bean id="address" class="com.ecom.data.entities.user.Address"/> 
    <bean id="user_master" class="com.ecom.data.entities.user.User_Master"/> 
    <bean id="notification_channels" class="com.ecom.data.entities.notification.Notification_Channels"/> 
    <bean id="notification_time" class="com.ecom.data.entities.notification.Notification_Time"/> 
    <bean id="prefilled_response" class="com.ecom.data.entities.product.Prefilled_Response"/> 
    <bean id="payment_options" class="com.ecom.data.entities.transaction.Payment_Options"/> 
    <bean id="catagory" class="com.ecom.data.entities.product.Catagory"/> 
    <bean id="vendor" class="com.ecom.data.entities.product.Vendor"/> 
    <bean id="requester" class="com.ecom.data.entities.product.Requester"/> 
    <bean id="requirement_type" class="com.ecom.data.entities.product.Requirement_type"/> 
    <bean id="discount_offer_type" class="com.ecom.data.entities.product.Discount_Offer_Type"/> 
    <bean id="discount_offers" class="com.ecom.data.entities.product.Discount_Offers"/> 
    <bean id="requirements" class="com.ecom.data.entities.product.Requirements"/> 
    <bean id="product_catalog" class="com.ecom.data.entities.product.Product_Catalog"/> 
    <bean id="product_catalog_vendor" class="com.ecom.data.entities.product.Product_Catalog_Vendor"/> 
    <bean id="product_vendor_payment_option_location" class="com.ecom.data.entities.product.PRODUCT_VENDOR_PAYMENT_OPTION_LOCATION"/> 

    <bean id="baseDaoImpl" abstract="true" class="baseDao.BaseDaoImpl"> </bean> 
    <bean id="pincodeDao" parent="baseDaoImpl" class="com.ecom.data.access.user.PincodeDao"> </bean> 


</beans> 





package com.ecom.data.access.user; 

import junit.framework.Assert; 

import org.junit.BeforeClass; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.springframework.test.context.ContextConfiguration; 
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests; 
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; 

import com.ecom.data.entities.user.Pincodes; 


@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = {"/applicationContext-usermanagement-dao.xml", 
     "/applicationContext-usermanagement-dao-test.xml" }) 
public class PiccodeTest extends AbstractTransactionalJUnit4SpringContextTests { 


    @BeforeClass 
    public static void setup(){} 


    @Test 
    public void pincodeTest(){ 

     PincodeDao pinDao = new PincodeDao(); // object of dao class to call the create method 
     pinDao.save(); 

    } 

} 
______________________________________________________________________ 
when i run this code with junit with maven it gives the error 
--------------------> 

SEVERE: Caught exception while allowing TestExecutionListener [org.springframewor[email protected]1f2edd2] to prepare test instance [[email protected]] 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pincodeDao' defined in class path resource [applicationContext-usermanagement-dao.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.ecom.data.access.user.PincodeDao]: Constructor threw exception; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1011) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:957) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:490) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:626) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:96) 
    at org.springframework.test.context.support.AbstractGenericContextLoader.loadContext(AbstractGenericContextLoader.java:44) 
    at org.springframework.test.context.TestContext.buildApplicationContext(TestContext.java:198) 
    at org.springframework.test.context.TestContext.getApplicationContext(TestContext.java:233) 
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:126) 
    at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:85) 
    at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:231) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:95) 
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:139) 
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) 
    at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) 
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) 
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) 
    at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) 
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.ecom.data.access.user.PincodeDao]: Constructor threw exception; nested exception is java.lang.NullPointerException 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163) 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1004) 
    ... 30 more 
Caused by: java.lang.NullPointerException 
    at baseDao.BaseDaoImpl.<init>(BaseDaoImpl.java:11) 
    at com.ecom.data.access.user.PincodeDao.<init>(PincodeDao.java:7) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
    at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148) 
    ... 32 more 

w tym kodzie próbuję tu prowadzę podmiot mam podmiot PINCODE z pochłaniacza seter i wszystko teraz chcę tylko, aby zapisać dane z tego kodu w moim zakresie testowymNie można utworzyć instancji komponentu bean: Konstruktor zarzucił wyjątek; Wyjątkiem jest zagnieżdżona java.lang.NullPointerException

używam hibernacji 4 Spring 3 i Maven 3

+0

masz wypróbowany przy sessionfactory.openSession() – ankit

Odpowiedz

4

problemem jest tutaj:

@Autowired 
private SessionFactory usermanagementSessionFactory; 
private Session session = usermanagementSessionFactory.getCurrentSession(); 

SessionFactory należy autowired, ale to zdarza się tylko po budowie. Budowa polega na wykonywaniu drugiej linii - która wykorzystuje nieuzbrojoną fabrykę. Stąd otrzymujesz wyjątek wskaźnika pustego.

Nawet jeśli twoja klasa nie ma konstruktora, konstrukcja instancji może nadal powodować wyjątek w wyniku inicjalizacji pola, tak jak w tym przypadku.

+0

więc na to, co mam teraz zrobić, jak mogę rozwiązać ten problem –

+0

@ user2385113 zastrzyk użycie konstruktora lub '@ PostContruct "opisana metoda przeprowadzania inicjalizacji, która musi zostać wykonana w określonej kolejności. – soulcheck

10

Przesuń inicjalizacji sesji poniżej metody

@PostConstruct 
public void init(){ 
     session = usermanagementSessionFactory.getCurrentSession(); 
} 
+0

Należy zamienić wiersz prywatnej sesji sesji = usermanagementSessionFactory.getCurrentSession(); z sesją sesji. Jeśli zrobiłeś to i nadal jesteś w błędzie, to sprawdź plik konfiguracyjny Spring lub zapisz konfigurację sprężyny i stos śledzenia –

+0

Możesz również sprawdzić to pytanie http://stackoverflow.com/questions/14953410/null-pointer-error-while -using-sessionfactory-on-hibernate-4-with-spring-3-2, o które pytałem wcześniej w tym roku –

Powiązane problemy