Spring的配置如下:<?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:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml">
</property>
</bean></beans>
Hibernate的配置如下:<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration> <session-factory>
<property name="dialect">
org.hibernate.dialect.Oracle9Dialect
</property>
<property name="connection.url">
jdbc:oracle:thin:@172.16.0.169:1521:orcl
</property>
<property name="connection.username">info</property>
<property name="connection.password">info</property>
<property name="connection.driver_class">
oracle.jdbc.driver.OracleDriver
</property>
<property name="myeclipse.connection.profile">hzw</property>
<mapping resource="com/hzw/bean/Emp.hbm.xml" /> </session-factory></hibernate-configuration>
自己写了个测试类代码如下:public class Test extends HibernateDaoSupport{ /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
Test  t = new Test();
List list = t.get();
System.out.println(list.size());
}

public List get(){
return super.getHibernateTemplate().find("from Emp");
}}
如果单独使用Hibernate操作数据库是可以查询出数据的!但是加上Spring过后、运行上面的代码就会报错:Exception in thread "main" java.lang.NullPointerException
at Test.get(Test.java:27)
at Test.main(Test.java:22)
错误就只有这三行、不知道是什么原因~~~希望高手给看看:某人在这里谢过了!!!

解决方案 »

  1.   

    你这是在一段java程序中运行 getHibernateTemplate(),现在你的 getHibernateTemplate()为空,因为根本没有加载applicationContext,所以要用 ApplicationContext 先加载配置文件。在者,有没有 hbm文件,否则也是连不上数据库的
      

  2.   

    非常感谢·~~总算是多了几行错误出来了!public static void main(String[] args) {
    // TODO Auto-generated method stub
    Test t = new Test();
    System.out.println(t.getall().size());

    }

    public List getall(){
    ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
    return (List)super.getHibernateTemplate().get(Emp.class, 2);

    }
    配置文件不变~~~:报出这样的错误:log4j:WARN No appenders could be found for logger (org.springframework.context.support.ClassPathXmlApplicationContext).
    log4j:WARN Please initialize the log4j system properly.
    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:423)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at test.Test.getall(Test.java:25)
    at test.Test.main(Test.java:20)
    Caused by: java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.class$(LocalSessionFactoryBean.java:174)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:554)
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1369)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1335)
    ... 16 more
      

  3.   

    Caused by: java.lang.NoClassDefFoundError: org/hibernate/context/CurrentSessionContext
    EMP这张表对应的 JAVA文件 和 .HBM文件 在 SPRING中加载了吗 ?
      

  4.   

    貌似在Spring配置个监听就OK了,
      

  5.   

    感谢各位提供帮助!问题已经解决了!这几天与点忙、没时间来结贴、在此说声抱歉了!问题是这样的测试类的代码如下:public class Test { /**
     * @param args
     */
    public static void main(String[] args) {
    ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
    IBaseDao basedao = (IBaseDao) app.getBean("baseDao");
    List list = basedao.getAll("from Emp mp where mp.ename like ?", new Object[]{"%"+"张"+"%"});
    for (int i = 0; i < list.size(); i++) {
    Emp emp = (Emp) list.get(i);
    System.out.println(emp.getEname());
    }
    }}  用来Spring的依赖注入过后就不用(好像也不能)在用new来创建对象了!
      在Spring文件中要给继承了HibernateDaoSupport的类注入SessFactory。
    配置文件代码如下:<!-- 注入SessFactory -->
    <bean id="baseDao" class="com.boxun.dao.impl.BaseDaoImpl">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    数据层访问impl类代码如下:public class BaseDaoImpl extends HibernateDaoSupport implements IBaseDao { @Override
    public List getAll(String hql, Object[] obj) {
    Query query = super.getSession().createQuery(hql);
    if (null!=obj && obj.length>0) {
    for (int i = 0; i < obj.length; i++) {
    query.setParameter(i, obj[i]);
    }
    }
    return query.list();
    }}
    呵呵~~~问题出现的时候总是那么的令人心烦! 解决了就看开很多!再次、谢谢各位帮忙!!!