Spring with Hibernate - 线程中的异常“main”显示java.lang.NullPointerException [英] Spring with Hibernate - Exception in thread "main" java.lang.NullPointerException

查看:127
本文介绍了Spring with Hibernate - 线程中的异常“main”显示java.lang.NullPointerException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 线程mainjava.lang中的异常。 NullPointerException 
Sep 04,2014 7:06:50 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO:Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4577357d:startup date [Thu Sep 04 19:06:50 IST 2014];上下文层次结构的根
2014年9月4日7:06:50 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO:从类路径资源加载XML bean定义[app-context.xml ]
2014年9月4日7:06:51 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO:预先实例化org.springframework.beans.factory.support.DefaultListableBeanFactory中的单例30583b71:定义bean [dataSource,mysessionFactory,hibernateTemplate,employeeDAO];工厂层次根目录
.19:06:52.016 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1
.19:06:52.023 [main] INFO org.hibernate。 cfg.Environment - 找不到hibernate.properties
.19:06:52.027 [main] INFO org.hibernate.cfg.Environment - 字节码提供程序名称:javassist
.19:06:52.032 [main] INFO org.hibernate.cfg.Environment - 使用JDK 1.4 java.sql.Timestamp处理
.19:06:52.246 [main] INFO org.hibernate.cfg.HbmBinder - 映射类:com.bean.Employee - > EMP1
2014年9月4日7:06:52 org.springframework.orm.hibernate3.LocalSessionFactoryBean buildSessionFactory
INFO:构建新的Hibernate SessionFactory
.19:06:52.320 [main] INFO ohc ConnectionProviderFactory - 初始化连接提供者:org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider
.19:06:54.660 [main] INFO org.hibernate.cfg.SettingsFactory - RDBMS:Oracle,版本:Oracle数据库10g快速版版本10.2 .0.1.0 - 生产
.19:06:54.660 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC驱动程序:Oracle JDBC驱动程序,版本:10.2.0.1.0XE
.19:06 :54.681 [main] INFO org.hibernate.dialect.Dialect - 使用方言:org.hibernate.dialect.Oracle9Dialect
.19:06:54.683 [main] WARN org.hibernate.dialect.Oracle9Dialect - Oracle9Dialect方言有已被弃用;使用Oracle9iDialect或Oracle10gDialect代替
.19:06:54.686 [main] INFO ohtTransactionFactoryFactory - 事务策略:org.springframework.orm.hibernate3.SpringTransactionFactory
.19:06:54.688 [main] INFO oht TransactionManagerLookupFactory - 没有配置TransactionManagerLookup(在JTA环境中,不推荐使用读写或事务性二级缓存)
.19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - beforeCompletion():已禁用
.19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - 事务结束时自动会话关闭:已禁用
.19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - JDBC批处理大小:15
.19:06:54.688 [main] INFO org.hibernate.cfg.SettingsFactory - 版本化数据的JDBC批更新:disabled
.19: 06:54.689 [main] INFO org.hibernate.cfg.SettingsFactory - 可滚动结果集:启用
.19:06:54.689 [main] INFO org .hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys():disabled
.19:06:54.689 [main] INFO org.hibernate.cfg.SettingsFactory - 连接发布模式:auto
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - 默认批量获取大小:1
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - 生成包含注释的SQL:disabled
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - 按主键排序SQL更新:disabled
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching:disabled
.19:06:54.690 [main] INFO org.hibernate.cfg.SettingsFactory - 查询翻译器:org.hibernate.hql.ast.ASTQueryTranslatorFactory
.19:06:54.692 [ main] INFO ohhast.ASTQueryTranslatorFactory - 使用ASTQueryTranslatorFactory
.19:06:54.692 [main] INFO org.hibernate.cfg.SettingsFactory - 查询语言替换:{}
.19:06:54.693 [main ] INFO org.hibernate.cfg.SettingsFactory - JPA-QL严格合规性:已禁用
.19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - 二级缓存:已启用
.19:06:54.693 [main] INFO org .hibernate.cfg.SettingsFactory - 查询缓存:已禁用
.19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - 缓存区工厂:org.hibernate.cache.impl.NoCachingRegionFactory
.19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - 优化缓存的最小存储空间:disabled
.19:06:54.693 [main] INFO org.hibernate.cfg.SettingsFactory - Structured second-级别高速缓存条目:已禁用
.19:06:54.699 [main] INFO org.hibernate.cfg.SettingsFactory - 将所有SQL回送到stdout
.19:06:54.700 [main] INFO org.hibernate。 cfg.SettingsFactory - Statistics:disabled
.19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - 删除的实体合成标识符rollback:disabled
.19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - 默认实体模式:pojo
.19:06:54.700 [main] INFO org.hibernate.cfg.SettingsFactory - 命名查询检查:启用
.19:06:54.771 [main] INFO o.hibernate.impl.SessionFactoryImpl - 建立会话工厂
.19:06:55.035 [main] INFO ohimpl.SessionFactoryObjectFactory - 不绑定工厂到JNDI,没有配置JNDI名称
1
rajeev
线程mainjava中的异常。 lang.NullPointerException
at com.bean.EmployeeDAO.saveEmployee(EmployeeDAO.java:15)
at com.bean.Test.main(Test.java:13)


我无法找到这个错误,任何人都可以帮助我。下面是我的代码



我已经创建了这样的数据库表


$ b

  CREATE TABLE EMP1 

ID NUMBER(10,0)NOT NULL PRIMARY KEY,
NAME VARCHAR2(10)
);

app-context.xml

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

< bean class =org.apache.tomcat.dbcp.dbcp.BasicDataSourceid =dataSource>
< property name =driverClassNamevalue =oracle.jdbc.driver.OracleDriver>< / property>
< property name =urlvalue =jdbc:oracle:thin:@localhost:1521:xe>< / property>
< property name =passwordvalue =test>< / property>
< / bean>

< bean class =org.springframework.orm.hibernate3.LocalSessionFactoryBean
id =mysessionFactory>

< property name =dataSourceref =dataSource>< / property>
< property name =mappingResources>
< list>
<值> Employee.hbm.xml< /值>
< / list>
< / property>
< property name =hibernateProperties>
<道具>
< prop key =hibernate.dialect> org.hibernate.dialect.Oracle9Dialect< / prop>
< prop key =hibernate.show_sql> true< / prop>
< /道具>
< / property>
< / bean>

< bean class =org.springframework.orm.hibernate3.HibernateTemplate
id =hibernateTemplate>
< property name =sessionFactoryref =mysessionFactory>< / property>
< / bean>

< bean class =com.bean.EmployeeDAOid =employeeDAO>
< property name =hibernateTemplateref =hibernateTemplate>< / property>
< / bean>
< / beans>

EmployeeDAO.java

  package com.bean; 

import org.springframework.orm.hibernate3.HibernateTemplate;

public class EmployeeDAO {
HibernateTemplate hibernateTemplate;

public void setHibernateTemplate(HibernateTemplate hibernateTemplate){
this.hibernateTemplate = hibernateTemplate;
}

public void saveEmployee(Employee employee){
System.out.println(employee.getId());
System.out.println(employee.getName());
hibernateTemplate.save(employee);
}

public void updateEmployee(Employee employee){
hibernateTemplate.update(employee);


$ / code $ / pre
$ b $ Employee.java

  package com.bean; 

public class Employee {
private int id;
私人字符串名称;

public int getId(){
return id;
}

public void setId(int id){
this.id = id;
}

public String getName(){
return name;
}

public void setName(String name){
this.name = name;
}

}

Employee.hbm.xml p>

 <?xml version =1.0?> 
<!DOCTYPE hibernate-mapping PUBLIC - // Hibernate / Hibernate映射DTD 3.0 // EN
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd\"> ;
<! - 生成2014年9月3日9:01:05由Hibernate Tools 3.4.0.CR1 - >
< hibernate-mapping>
< class name =com.bean.Employeetable =EMP1>
< id name =idtype =int>
< column name =ID/>
< generator class =assigned/>
< / id>
< property name =nametype =java.lang.String>
< column name =NAME/>
< / property>
< / class>
< / hibernate-mapping>

Test.java

  package com.bean; 

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
public static void main(String [] args){
ApplicationContext context = new ClassPathXmlApplicationContext(app-context.xml);
Employee employee = new Employee();
employee.setName(rajeev);
employee.setId(1);
EmployeeDAO employeeDAO = new EmployeeDAO();
employeeDAO.saveEmployee(employee);






$ p这是github链接
git @ github .com:mcarajeev / spring-with-hibernate1.git

解决方案

如果您创建 EmployeeDAO employeeDAO = new EmployeeDAO(); 以这种方式HibernateTemplate属性为null。



尝试更改












$ b $ $ b

EmployeeDAO employeeDAO =(EmployeeDAO)context.getBean(employeeDAO);


I am learning spring with hibernate integration.I am getting this exception

Exception in thread "main" java.lang.NullPointerException
Sep 04, 2014 7:06:50 PM org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@4577357d: startup date [Thu Sep 04 19:06:50 IST 2014]; root of context hierarchy
Sep 04, 2014 7:06:50 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [app-context.xml]
Sep 04, 2014 7:06:51 PM org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
INFO: Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@30583b71: defining beans [dataSource,mysessionFactory,hibernateTemplate,employeeDAO]; root of factory hierarchy
.19:06:52.016 [main] INFO  org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1 
.19:06:52.023 [main] INFO  org.hibernate.cfg.Environment - hibernate.properties not found 
.19:06:52.027 [main] INFO  org.hibernate.cfg.Environment - Bytecode provider name : javassist 
.19:06:52.032 [main] INFO  org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling 
.19:06:52.246 [main] INFO  org.hibernate.cfg.HbmBinder - Mapping class: com.bean.Employee -> EMP1 
Sep 04, 2014 7:06:52 PM org.springframework.orm.hibernate3.LocalSessionFactoryBean buildSessionFactory
INFO: Building new Hibernate SessionFactory
.19:06:52.320 [main] INFO  o.h.c.ConnectionProviderFactory - Initializing connection provider: org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider 
.19:06:54.660 [main] INFO  org.hibernate.cfg.SettingsFactory - RDBMS: Oracle, version: Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production 
.19:06:54.660 [main] INFO  org.hibernate.cfg.SettingsFactory - JDBC driver: Oracle JDBC driver, version: 10.2.0.1.0XE 
.19:06:54.681 [main] INFO  org.hibernate.dialect.Dialect - Using dialect: org.hibernate.dialect.Oracle9Dialect 
.19:06:54.683 [main] WARN  org.hibernate.dialect.Oracle9Dialect - The Oracle9Dialect dialect has been deprecated; use either Oracle9iDialect or Oracle10gDialect instead 
.19:06:54.686 [main] INFO  o.h.t.TransactionFactoryFactory - Transaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory 
.19:06:54.688 [main] INFO  o.h.t.TransactionManagerLookupFactory - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended) 
.19:06:54.688 [main] INFO  org.hibernate.cfg.SettingsFactory - Automatic flush during beforeCompletion(): disabled 
.19:06:54.688 [main] INFO  org.hibernate.cfg.SettingsFactory - Automatic session close at end of transaction: disabled 
.19:06:54.688 [main] INFO  org.hibernate.cfg.SettingsFactory - JDBC batch size: 15 
.19:06:54.688 [main] INFO  org.hibernate.cfg.SettingsFactory - JDBC batch updates for versioned data: disabled 
.19:06:54.689 [main] INFO  org.hibernate.cfg.SettingsFactory - Scrollable result sets: enabled 
.19:06:54.689 [main] INFO  org.hibernate.cfg.SettingsFactory - JDBC3 getGeneratedKeys(): disabled 
.19:06:54.689 [main] INFO  org.hibernate.cfg.SettingsFactory - Connection release mode: auto 
.19:06:54.690 [main] INFO  org.hibernate.cfg.SettingsFactory - Default batch fetch size: 1 
.19:06:54.690 [main] INFO  org.hibernate.cfg.SettingsFactory - Generate SQL with comments: disabled 
.19:06:54.690 [main] INFO  org.hibernate.cfg.SettingsFactory - Order SQL updates by primary key: disabled 
.19:06:54.690 [main] INFO  org.hibernate.cfg.SettingsFactory - Order SQL inserts for batching: disabled 
.19:06:54.690 [main] INFO  org.hibernate.cfg.SettingsFactory - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory 
.19:06:54.692 [main] INFO  o.h.h.ast.ASTQueryTranslatorFactory - Using ASTQueryTranslatorFactory 
.19:06:54.692 [main] INFO  org.hibernate.cfg.SettingsFactory - Query language substitutions: {} 
.19:06:54.693 [main] INFO  org.hibernate.cfg.SettingsFactory - JPA-QL strict compliance: disabled 
.19:06:54.693 [main] INFO  org.hibernate.cfg.SettingsFactory - Second-level cache: enabled 
.19:06:54.693 [main] INFO  org.hibernate.cfg.SettingsFactory - Query cache: disabled 
.19:06:54.693 [main] INFO  org.hibernate.cfg.SettingsFactory - Cache region factory : org.hibernate.cache.impl.NoCachingRegionFactory 
.19:06:54.693 [main] INFO  org.hibernate.cfg.SettingsFactory - Optimize cache for minimal puts: disabled 
.19:06:54.693 [main] INFO  org.hibernate.cfg.SettingsFactory - Structured second-level cache entries: disabled 
.19:06:54.699 [main] INFO  org.hibernate.cfg.SettingsFactory - Echoing all SQL to stdout 
.19:06:54.700 [main] INFO  org.hibernate.cfg.SettingsFactory - Statistics: disabled 
.19:06:54.700 [main] INFO  org.hibernate.cfg.SettingsFactory - Deleted entity synthetic identifier rollback: disabled 
.19:06:54.700 [main] INFO  org.hibernate.cfg.SettingsFactory - Default entity-mode: pojo 
.19:06:54.700 [main] INFO  org.hibernate.cfg.SettingsFactory - Named query checking : enabled 
.19:06:54.771 [main] INFO  o.hibernate.impl.SessionFactoryImpl - building session factory 
.19:06:55.035 [main] INFO  o.h.impl.SessionFactoryObjectFactory - Not binding factory to JNDI, no JNDI name configured 
1
rajeev
Exception in thread "main" java.lang.NullPointerException
    at com.bean.EmployeeDAO.saveEmployee(EmployeeDAO.java:15)
    at com.bean.Test.main(Test.java:13)

I am unable to find the mistake,can anyone help me.Below is my code

I have created database table like this

CREATE TABLE  EMP1   
(    
    ID NUMBER(10,0) NOT NULL PRIMARY KEY,   
    NAME VARCHAR2(10)   
);

app-context.xml

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

    <bean class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" id="dataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:xe"></property>
        <property name="username" value="test"></property>
        <property name="password" value="test"></property>
    </bean>

    <bean class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
        id="mysessionFactory">

        <property name="dataSource" ref="dataSource"></property>
        <property name="mappingResources">
            <list>
                <value>Employee.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>

    <bean class="org.springframework.orm.hibernate3.HibernateTemplate"
        id="hibernateTemplate">
        <property name="sessionFactory" ref="mysessionFactory"></property>
    </bean>

    <bean class="com.bean.EmployeeDAO" id="employeeDAO">
        <property name="hibernateTemplate" ref="hibernateTemplate"></property>
    </bean>
</beans>

EmployeeDAO.java

package com.bean;

import org.springframework.orm.hibernate3.HibernateTemplate;

public class EmployeeDAO {
    HibernateTemplate hibernateTemplate;

    public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
        this.hibernateTemplate = hibernateTemplate;
    }

    public void saveEmployee(Employee employee){
        System.out.println(employee.getId());
        System.out.println(employee.getName());
        hibernateTemplate.save(employee);
    }

    public void updateEmployee(Employee employee){
        hibernateTemplate.update(employee);
    }
}

Employee.java

package com.bean;

public class Employee {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

Employee.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated Sep 3, 2014 9:01:05 PM by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="com.bean.Employee" table="EMP1">
        <id name="id" type="int">
            <column name="ID" />
            <generator class="assigned" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
    </class>
</hibernate-mapping>

Test.java

package com.bean;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test {
    public static void main(String[] args) {
        ApplicationContext context=new ClassPathXmlApplicationContext("app-context.xml");
        Employee employee=new Employee();
        employee.setName("rajeev");
        employee.setId(1);
        EmployeeDAO employeeDAO=new EmployeeDAO();
        employeeDAO.saveEmployee(employee);
    }
}

this is github link git@github.com:mcarajeev/spring-with-hibernate1.git

解决方案

If you create EmployeeDAO employeeDAO=new EmployeeDAO(); in this way the attribute HibernateTemplate is null.

try to change

EmployeeDAO employeeDAO=new EmployeeDAO();

in

EmployeeDAO employeeDAO= (EmployeeDAO) context.getBean("employeeDAO");

这篇关于Spring with Hibernate - 线程中的异常“main”显示java.lang.NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆