【问题标题】:NullPointerException returned by Query object in DAO using Spring 3 MVC使用 Spring 3 MVC 在 DAO 中的 Query 对象返回 NullPointerException
【发布时间】:2023-04-02 17:45:01
【问题描述】:

我是春天的新手,我的 Eclipse 中有 3 个项目。一个 JPA.jar、client.jar 和一个 Web.war。 我将在 Tomcat 6 上部署这些,因此所有依赖项都主要在 Web.war 上。 我的问题是我可以将数据保存在 oracle 数据库中,但我无法从 DAO 中的 Query 对象中获取(选择)数据:(。

这是我的 servlet 上下文

</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;
}

【问题讨论】:

  • 你能提供完整的堆栈跟踪吗?
  • 您正在尝试使用命名查询。

标签: java hibernate spring jpa dao


【解决方案1】:

createNamedQuery 期望您引用您在 persistence.xml 中配置的查询

当您直接指定 JPQL 时,您需要使用 createQuery 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 1970-01-01
    • 2013-01-04
    相关资源
    最近更新 更多