package Dao;import java.util.List;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;public class BaseDao extends HibernateDaoSupport implements IBaseDao{ public Object findById(Class cls, String id) {
return getHibernateTemplate().get(cls, id);
} public List select(String sql) {
/*
Session ss=getHibernateTemplate().getSessionFactory().getCurrentSession();
Transaction transaction =null;
ss.beginTransaction();
SQLQuery result=null;
try {
result = ss.createSQLQuery(sql);
System.out.println(sql);
return result.list();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
transaction.commit();
}
*/
return getHibernateTemplate().find(sql);
}

public static void main(String[] args) {
new BaseDao().select("from AssetsTb");
}
}异常:
Exception in thread "main" java.lang.NullPointerException
at Dao.BaseDao.select(BaseDao.java:30)
at Dao.BaseDao.main(BaseDao.java:35)
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--Mapping file autogenerated by MyEclipse Persistence Tools-->
<hibernate-mapping>
    <class name="vo.AssetsTb" table="ASSETS_TB" schema="AMS">
        <id name="assId" type="java.lang.String">
            <column name="ASS_ID" />
            <generator class="native"></generator>
        </id>
        <property name="assName" type="java.lang.String">
            <column name="ASS_NAME" not-null="true" />
        </property>
        <property name="assPrice" type="java.lang.String">
            <column name="ASS_PRICE" />
        </property>
        <property name="assStatus" type="java.lang.String">
            <column name="ASS_STATUS" not-null="true" />
        </property>
        <property name="assUnit" type="java.lang.String">
            <column name="ASS_UNIT" not-null="true" />
        </property>
        <property name="assDutyUser" type="java.lang.String">
            <column name="ASS_DUTY_USER" not-null="true" />
        </property>
        <property name="assDepartment" type="java.lang.String">
            <column name="ASS_DEPARTMENT" not-null="true" />
        </property>
        <property name="optioner" type="java.lang.String">
            <column name="OPTIONER" not-null="true" />
        </property>
        <property name="optiondate" type="java.util.Date">
            <column name="OPTIONDATE" length="7" not-null="true" />
        </property>
        <property name="stkUser" type="java.lang.String">
            <column name="STK_USER" not-null="true" />
        </property>
        <property name="stkDate" type="java.util.Date">
            <column name="STK_DATE" length="7" not-null="true" />
        </property>
        <property name="re" type="java.lang.String">
            <column name="REMARK" />
        </property>
    </class>
</hibernate-mapping>
<?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.0.xsd">
<bean id="DBS" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url" value="jdbc:oracle:thin:@10.246.15.26:1521:XE">
</property>
<property name="username" value="ams"></property>
<property name="password" value="ams"></property>
</bean>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="DBS"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>vo/AssetsTb.hbm.xml</value>
</list>
</property>
</bean>

<bean id="dao" class="Dao.BaseDao">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="test" class="service.test" scope="prototype">
<property name="dao">
<ref bean="dao"/>
</property>
</bean>

</beans>

解决方案 »

  1.   

    大哥啊!你用的是spring框架,然后再在
    public static void main(String[] args) {
    new BaseDao().select("from AssetsTb");
    }
    }这里new 一个dao对象,不报空指针就怪事来了!
      

  2.   

    你应该ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
    DAO dao = (DAO)ctx.getBean("dao");
    dao.select("from AssetsTb");
    就有了,你可以试试!
      

  3.   

    你spring容器都没启动吧....你先初始化spring容器...
      

  4.   

    虽然按照三楼的操作,能使用HQL语句查询了,但是却不能用SQL语句了。
      

  5.   

    楼主对sping和java基础都不怎么了解