`

Hibernate3报空指针错误.<急>

阅读更多
java 代码
  1. package com.dn.dao;   
  2.   
  3. import java.util.Collection;   
  4. import java.util.List;   
  5. import java.util.ArrayList;   
  6. import org.hibernate.Criteria;   
  7. import org.hibernate.Query;   
  8. import org.hibernate.Session;   
  9. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;   
  10. import org.springframework.orm.hibernate3.SessionFactoryUtils;   
  11.   
  12.   
  13. public class BaseDAO extends HibernateDaoSupport implements IBaseDAO {   
  14.   
  15.     public boolean create(Object entity) {   
  16.         try {   
  17.             super.getHibernateTemplate().save(entity);   
  18.             return true;   
  19.         } catch (Exception e) {   
  20.             return false;   
  21.         }   
  22.     }   
  23.   
  24.     public Session openSession() {   
  25.            
  26.             return SessionFactoryUtils.getSession(super.getHibernateTemplate().getSessionFactory(),false);   
  27.     }   
  28.   
  29.     public Query getQuery(String sql) {   
  30.         Session session = this.openSession();   
  31.         return session.createQuery(sql);   
  32.     }   
  33.   
  34.     public Criteria getCriteria(Class clazz) {   
  35.         Session session = this.getSession();   
  36.         return session.createCriteria(clazz);   
  37.     }   
  38.   
  39.     public boolean update(Object entity) {   
  40.         try {   
  41.             super.getHibernateTemplate().update(entity);   
  42.             return true;   
  43.         } catch (Exception e) {   
  44.             return false;   
  45.         }   
  46.     }   
  47.   
  48.     public boolean delete(Object entity) {   
  49.         try {   
  50.             super.getHibernateTemplate().delete(entity);   
  51.             return true;   
  52.         } catch (Exception e) {   
  53.             return false;   
  54.         }   
  55.     }   
  56.   
  57.     public boolean deleteAll(Class clazz) {   
  58.         // TODO 自动生成方法存根   
  59.         return false;   
  60.     }   
  61.   
  62.     public boolean deleteAll(Collection entities) {   
  63.         // TODO 自动生成方法存根   
  64.         return false;   
  65.     }   
  66.   
  67.     public List LoadAll(Class clazz) {   
  68.         // TODO 自动生成方法存根   
  69.         return null;   
  70.     }   
  71.   
  72.     public Object loadByKey(Class clazz, String keyName, Object keyValue) {   
  73.         // TODO 自动生成方法存根   
  74.         return null;   
  75.     }   
  76.   
  77.     public Object getByPk(Class clazz, Integer id) {   
  78.         return (Object)super.getHibernateTemplate().get(clazz,id);   
  79.     }   
  80.   
  81.     public List find(String queryString) {   
  82.         List list = null;   
  83.         try {   
  84.             list =super.getHibernateTemplate().find(queryString);   
  85.             return list;   
  86.         } catch (Exception e) {   
  87.             return list;   
  88.         }   
  89.     }   
  90.   
  91.     public List find(String queryString, Object param) {   
  92.         List list = null;   
  93.         try {   
  94.             list = super.getHibernateTemplate().find(queryString,param);   
  95.             return list;   
  96.         } catch (Exception e) {   
  97.             return list;   
  98.         }   
  99.     }   
  100.   
  101.     public List find(String queryString, Object[] params) {   
  102.         List list = null;   
  103.         try {   
  104.             list = super.getHibernateTemplate().find(queryString,params);   
  105.             return list;   
  106.         } catch (Exception e) {   
  107.             StringBuffer buffer = new StringBuffer();   
  108.             for(int i=0;i<params.length;i++){   
  109.                 buffer.append(params[i]);   
  110.                 buffer.append(" ");   
  111.             }   
  112.             return list;   
  113.         }   
  114.     }   
  115.   
  116.     /**  
  117.      * @param args  
  118.      */  
  119.     public static void main(String[] args) {   
  120.         BaseDAO bd = new BaseDAO();   
  121.         List list = bd.find("select l.name from Login as l");   
  122.         System.out.println(list.size());   
  123.   
  124.     }   
  125.   
  126. }   

 

 

我只是测试执行main函数就报错误>>>

java 代码
  1. Exception in thread "main" java.lang.NullPointerException   
  2.     at com.dn.dao.BaseDAO.main(BaseDAO.java:122)   

 

 

不知道该怎么解决啊..请大家..本人刚用hibernate时间不是蛮长..

谢谢..

分享到:
评论
6 楼 neitnaco 2007-10-27  
引用

1、
既然使用了HibernateDaoSupport ,还有什么理由写自己的openSession()方法?

2、
只要new 一个DAO,就能连上心中想要的那个数据库?
(默默念到:我想连到美国国防部的那个数据库)


呵呵..
Qieqie:
让你见笑了..

我其实应该先加载applicationContext.xml文件的.是吧..不然也就连接不上数据库了耶..范了这么一个低级错误..谢谢提醒..
至于第一个问题为什么要写openSession()方法,其实我也不是很了解spring是如何控制反转的.

我运用
ApplicationContext ac = new FileSystemXmlApplicationContext("classpath:applicationContext.xml");

加载spring配置文件..
但是好像还得修改下哪里的配置才可以JAVA运用程序的形式运行一个类里面的main函数..至于修改那个地方.偶很迷惑.望指点..applicationContext.xml文件贴出来大家参考参考..
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

	<!--数据源datasource的声明-->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
		<property name="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property>
		<property name="url"><value>jdbc:oracle:thin:@144.20.80.179:1521:oratest1</value></property>
		<property name="username"><value>test</value></property>
		<property name="password"><value>test</value></property>		
	</bean>
	
	<!--Session Factory声明-->
	<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref local="dataSource" />
		</property>
		<property name="mappingResources">
			<list>
			<value>com/dn/struts/entity/Login.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>
	
	<!--定义一个hibernate 拦截器 -->
	<bean id="hibernateInterceptor" class="org.springframework.orm.hibernate3.HibernateInterceptor">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>

	<!-- hibernate 事务-->
	<bean id="myTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>
	
	<!--真正的DAO层-->
	<bean id="basedaoTarget" class="com.dn.dao.BaseDAO">
		<property name="sessionFactory">
			<ref bean="sessionFactory" />
		</property>
	</bean>

	<!--代理的DAO层 -->
	<bean id="basedao" class="org.springframework.aop.framework.ProxyFactoryBean">
		<property name="proxyInterfaces">
			<value>com.dn.dao.IBaseDAO</value>
		</property>
		<property name="interceptorNames">
			<list>
				<value>hibernateInterceptor</value>
				<value>basedaoTarget</value>
			</list>
		</property>
	</bean>
	
	<!-- 真正的服务层 修改bean中id属性和class属性-->
	<bean id="userServiceTarget" class="com.dn.struts.service.UserService">
		<property name="basedao">
			<ref bean="basedao" />
		</property>
	</bean>

	<!-- 代理的服务层 修改bean中id属性和ref中的bean的属性并且等于真正的服务层的bean的id属性-->
	<bean id="userService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
		<property name="transactionManager">
			<ref bean="myTransactionManager" />
		</property>
		<property name="target">
			<ref bean="userServiceTarget" />
		</property>
		<property name="transactionAttributes">
			<props>
				<prop key="get*">PROPAGATION_SUPPORTS</prop>
				<prop key="*">PROPAGATION_REQUIRED</prop>
			</props>
		</property>
	</bean>
	
	<!-- strtus控制器的配置 ref中的bean属性等于代理层中的bean中的id属性-->
	<bean name="/login" class="com.dn.struts.action.LoginAction">
		<property name="userService">
			<ref bean="userService" />
		</property>
	</bean>
	
</beans>


谢谢大家...
5 楼 liusong1111 2007-10-27  
1楼:哦
2楼:霍
3楼:厚
4楼:哈
5楼:嘿

纯属倒乱,请BS~

4 楼 Qieqie 2007-10-27  
过客给您的几个问题

1、
既然使用了HibernateDaoSupport ,还有什么理由写自己的openSession()方法?

2、
只要new 一个DAO,就能连上心中想要的那个数据库?
(默默念到:我想连到美国国防部的那个数据库)

由此,我可以判断,你很痛苦。看贴的我也很郁闷。

3 楼 neitnaco 2007-10-26  
那我现在把main函数里面换了一个有打开session的..
public static void main(String[] args) {
		
		BaseDAO bd = new BaseDAO();
		List list = bd.getQuery("select l.name from Login as l").list();
		
		System.out.println(list.size());

	}


还是一样报错误..错误如下:
Exception in thread "main" java.lang.NullPointerException
	at com.dn.dao.BaseDAO.openSession(BaseDAO.java:25)
	at com.dn.dao.BaseDAO.getQuery(BaseDAO.java:29)
	at com.dn.dao.BaseDAO.main(BaseDAO.java:123)



急切盼望解决哈...
2 楼 neitnaco 2007-10-26  
那我现在该怎么操作呢...这个大哥可以说滴清楚点哈..
1 楼 抛出异常的爱 2007-10-26  
session还没开。。。。

相关推荐

    spring+struts+hibernate+dwr+jstl做的实例

    2.7.6rc1.jar&lt;br&gt;asm.jar&lt;br&gt;asm-attrs.jar&lt;br&gt;cglib-2.1.3.jar&lt;br&gt;commons-collections-2.1.1.jar&lt;br&gt;commons-logging-1.0.4.jar&lt;br&gt;dom4j-1.6.1.jar&lt;br&gt;ehcache-1.1.jar&lt;br&gt;hibernate3.jar&lt;br&gt;jaas.jar&lt;br&gt;jaxen-...

    spring-hibernate-dwr实例

    collections-2.1.1.jar&lt;br&gt;commons-logging-1.0.4.jar&lt;br&gt;dom4j-1.6.1.jar&lt;br&gt;ehcache-1.1.jar&lt;br&gt;hibernate3.jar&lt;br&gt;jaas.jar&lt;br&gt;jaxen-1.1-beta-7.jar&lt;br&gt;jdbc2_0-stdext.jar&lt;br&gt;jta.jar&lt;br&gt;log4j-1.2.11.jar&lt;br&gt;...

    支持多个连接多个数据库的HibernateFactory

    只支持Hibernate3.0&lt;br&gt;基本用法:&lt;br&gt;import com.liu.base.StaticHbmQuery;&lt;br&gt;&lt;br&gt;StaticHbmQuery shq = new StaticHbmQuery(\"hibernate.cfg.xml\");...&lt;br&gt;&lt;br&gt;......&lt;br&gt;&lt;br&gt;hibernate.cfg.xml存放位置在src下.

    hibernate-3.2

    hibernate-3.2\lib\antlr-2.7.6.jar&lt;br&gt; hibernate-3.2\lib\...hibernate-3.2\lib\dom4j-1.6.1.jar&lt;br&gt; hibernate-3.2\lib\ehcache-1.1.jar&lt;br&gt; hibernate-3.2\hibernate3.jar&lt;br&gt; hibernate-3.2\lib\log4j-1.2.13.jar

    hibernate-3.22

    hibernate-3.2\lib\antlr-2.7.6.jar&lt;br&gt; hibernate-3.2\lib\...hibernate-3.2\lib\dom4j-1.6.1.jar&lt;br&gt; hibernate-3.2\lib\ehcache-1.1.jar&lt;br&gt; hibernate-3.2\hibernate3.jar&lt;br&gt; hibernate-3.2\lib\log4j-1.2.13.jar

    mysql+jdbc+jsp+Hibernate3.2+tomcattomcat5.028成功测试

    charSet=GBK" %&gt;&lt;br&gt;&lt;%@ page import="java.util.*" %&gt;&lt;br&gt;&lt;%@ page import="org.hibernate.SessionFactory" %&gt;&lt;br&gt;&lt;%@ page import="org.hibernate.Session" %&gt;&lt;br&gt;&lt;%@ page import="org.hibernate.cfg.*" %&gt;&lt;br&gt;&lt;%...

    Spring4 + Hibernate5详细maven构建.docx

    - **Hibernate版本**: `&lt;hibernate.version&gt;5.0.8.Final&lt;/hibernate.version&gt;` 指定了Hibernate ORM的具体版本号。 **1.2 Spring核心依赖** ```xml &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; ...

    java8+tomcat8+struts2.5+spring4.3+hibernate5.2框架搭建详细过程

    &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQL5Dialect&lt;/property&gt; &lt;property name="hibernate.show_sql"&gt;true&lt;/property&gt; &lt;mapping class="com.example.entity.User"/&gt; &lt;/session-factory&gt; ...

    Hibernate Spatial 4 教程

    &lt;property name="hibernate.dialect"&gt;org.hibernate.spatial.dialect.postgis.PostgisDialect&lt;/property&gt; 四、 映射 Geometries 地理对象可以由 geometry 属性来描述其位置和几何图形。Hibernate Spatial 使用 ...

    hibernate 教程

    JCA支持&lt;br&gt;3. SessionFactory配置&lt;br&gt;3.1. 可编程配置方式&lt;br&gt;3.2. 获取SessionFactory&lt;br&gt;3.3. 用户自行提供JDBC连接&lt;br&gt;3.4. Hibernate提供的JDBC连接&lt;br&gt;3.5. 可选配置属性&lt;br&gt;3.5.1. SQL Dialects SQL 方言&lt;br...

    spring4 mvc + jpa demo

    pom.xml 的引入的相关jar版本配置 ... &lt;hibernate-entitymanager.version&gt;4.1.0.Final&lt;/hibernate-entitymanager.version&gt; &lt;hibernate-jpa.version&gt;1.0.1.Final&lt;/hibernate-jpa.version&gt; &lt;/properties&gt;

    实验室排课系统.rar

    &lt;prop key="hibernate.dialect"&gt; org.hibernate.dialect.MySQLDialect &lt;/prop&gt; &lt;/props&gt; &lt;/property&gt; &lt;property name="mappingResources"&gt; &lt;list&gt; &lt;value&gt;vo/Users.hbm.xml&lt;/...

    MySQL 6 绿色精简BAT版 2.24 MB

    7.1.3 6.6 MB &lt;br&gt;地址1&lt;br&gt; &lt;br&gt;地址2 &lt;br&gt;Navicat for MySQL 英文&lt;br&gt;(Linux版)&lt;br&gt;* 非商业使用 8.0.27 20 MB &lt;br&gt;地址1&lt;br&gt;&lt;br&gt; &lt;br&gt;地址2 &lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;MySQL 6 绿色版使用批处理(BAT)文件执行,可以随意...

    中国移动业务管理系统(struts+spring+hibernate)源码

    &lt;br&gt;使用方法:&lt;br&gt;(1)在oracle数据库中运行数据库脚本文件cnc.sql.&lt;br&gt;(2)用eclipse(或其它开发工具)直接导入工程.&lt;br&gt;(3)将spring配置文件applicationContext.xml中数据库连接地址改为您自已的地址。&lt;br&gt;(4)部署到...

    List<Map>转化为List工具类

    一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List&lt;Map&lt;String, Object&gt;&gt;结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()。 此工程中就是解决List&lt;Map&lt;String, Object&gt;...

    采用struts+spring+hibernate架构电信业务系统

    &lt;br&gt;&lt;br&gt;使用方法:&lt;br&gt;(1)在oracle数据库中运行数据库脚本文件cnc.sql.&lt;br&gt;(2)用eclipse(或其它开发工具)直接导入工程.&lt;br&gt;(3)将spring配置文件applicationContext.xml中数据库连接地址改为您自已的地址。...

    hibernate于各大数据库的连接

    &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQLDialect&lt;/property&gt; ... &lt;/session-factory&gt; &lt;/hibernate-configuration&gt; ``` ### Hibernate与Oracle连接示例 ```xml &lt;hibernate-...

    hibernate连接mysql,oracle,sqlserver, access数据库包和方法

    &lt;property name="hibernate.dialect"&gt;org.hibernate.dialect.MySQL5Dialect&lt;/property&gt; &lt;property name="hibernate.connection.driver_class"&gt;com.mysql.cj.jdbc.Driver&lt;/property&gt; &lt;property name="hibernate....

Global site tag (gtag.js) - Google Analytics