NullPointerException, возвращаемое объектом Query в DAO с помощью Spring 3 MVC - PullRequest
0 голосов
/ 05 декабря 2011

Я новичок весной, у меня в затмении 3 проекта.Один JPA.jar, client.jar и Web.war.Я собираюсь развернуть их на Tomcat 6, чтобы все зависимости были в основном на Web.war.Моя проблема в том, что я могу сохранить данные в базе данных Oracle, но не могу получить (выбрать) данные из объекта Query в DAO: (.

здесь мой контекст сервлета

</beans:bean>
                        <!-- Oracle Driver -->
<beans:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <beans:property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <beans:property name="url" value="jdbc:oracle:thin:@//sapodev.sapo.co.za:1523/P3P"/>
    <beans:property name="username" value="pensions"/>
    <beans:property name="password" value="pensions"/>

</beans:bean>

<!-- JPA EntityManagerFactory -->           
<beans:bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">  

    <beans:property name="persistenceUnitName" value="frameworkPU"/>  
    <beans:property name="dataSource" ref="dataSource"/>  
    <beans:property name="jpaVendorAdapter">  
        <beans:bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">  
            <beans:property name="showSql" value="true"/>  
            <!-- <property name="generateDdl" value="false"/>  --> 
            <beans:property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect"/> 
        </beans:bean>  
    </beans:property>  
</beans:bean> 

<beans:bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">  
    <beans:property name="entityManagerFactory" ref="entityManagerFactory" /> 
    <beans:property name="dataSource" ref="dataSource"/>  
</beans:bean>  

<beans:bean id="persistenceAnnotation"    class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />  
<beans:bean id="contactService" class="za.co.sapo.service.ContactServiceImpl"/>
    <context:component-scan base-package="za.co.sapo.controller" />
    <context:annotation-config /> 
    <context:component-scan base-package="za.co.sapo.dao"/>
</beans:beans>

Вот класс DAO

public List<DevUserTab> findUsers() {
    List<DevUserTab> list = null;

    log.info("DD");
    try{
        TypedQuery<DevUserTab> query = this.entityManagerFactory.createNamedQuery("SELECT d from DevUserTab d", DevUserTab.class);
        list= query.getResultList();
    } catch(Exception e){
        log.info(" EE");
        e.printStackTrace();
    }
    return list;
}

Вот класс обслуживания

@Autowired
public ContactDAO contactDAO;
public List findUsers() {
    // TODO Auto-generated method stub
    ContactDAO contact = new ContactDAO();
    List users = contact.findUsers();
    return users;
}

Мой контроллер

@RequestMapping(value = "/table")
public ModelAndView getContacts(Locale locale, Model model) {
    logger.info("Getting the Contacts for us "+ locale.toString());

    ModelAndView mv = new ModelAndView("/table");
    try{
        List<Contact> objects = ServiceLayerContext.getContext().findContacts();
        mv.addObject("objects", objects );
    } catch(Exception e){
        e.printStackTrace();
    }
    return mv;
}

1 Ответ

0 голосов
/ 05 декабря 2011

createNamedQuery ожидает, что вы ссылаетесь на запрос, настроенный вами в файле persistence.xml

При указании JPQL напрямую, как вы делаете, вам нужно использовать метод createQuery.

...