2007-10-26
Hibernate3报空指针错误.<急>
关键字: 疑惑...java 代码
- package com.dn.dao;
- import java.util.Collection;
- import java.util.List;
- import java.util.ArrayList;
- import org.hibernate.Criteria;
- import org.hibernate.Query;
- import org.hibernate.Session;
- import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
- import org.springframework.orm.hibernate3.SessionFactoryUtils;
- public class BaseDAO extends HibernateDaoSupport implements IBaseDAO {
- public boolean create(Object entity) {
- try {
- super.getHibernateTemplate().save(entity);
- return true;
- } catch (Exception e) {
- return false;
- }
- }
- public Session openSession() {
- return SessionFactoryUtils.getSession(super.getHibernateTemplate().getSessionFactory(),false);
- }
- public Query getQuery(String sql) {
- Session session = this.openSession();
- return session.createQuery(sql);
- }
- public Criteria getCriteria(Class clazz) {
- Session session = this.getSession();
- return session.createCriteria(clazz);
- }
- public boolean update(Object entity) {
- try {
- super.getHibernateTemplate().update(entity);
- return true;
- } catch (Exception e) {
- return false;
- }
- }
- public boolean delete(Object entity) {
- try {
- super.getHibernateTemplate().delete(entity);
- return true;
- } catch (Exception e) {
- return false;
- }
- }
- public boolean deleteAll(Class clazz) {
- // TODO 自动生成方法存根
- return false;
- }
- public boolean deleteAll(Collection entities) {
- // TODO 自动生成方法存根
- return false;
- }
- public List LoadAll(Class clazz) {
- // TODO 自动生成方法存根
- return null;
- }
- public Object loadByKey(Class clazz, String keyName, Object keyValue) {
- // TODO 自动生成方法存根
- return null;
- }
- public Object getByPk(Class clazz, Integer id) {
- return (Object)super.getHibernateTemplate().get(clazz,id);
- }
- public List find(String queryString) {
- List list = null;
- try {
- list =super.getHibernateTemplate().find(queryString);
- return list;
- } catch (Exception e) {
- return list;
- }
- }
- public List find(String queryString, Object param) {
- List list = null;
- try {
- list = super.getHibernateTemplate().find(queryString,param);
- return list;
- } catch (Exception e) {
- return list;
- }
- }
- public List find(String queryString, Object[] params) {
- List list = null;
- try {
- list = super.getHibernateTemplate().find(queryString,params);
- return list;
- } catch (Exception e) {
- StringBuffer buffer = new StringBuffer();
- for(int i=0;i<params.length;i++){
- buffer.append(params[i]);
- buffer.append(" ");
- }
- return list;
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) {
- BaseDAO bd = new BaseDAO();
- List list = bd.find("select l.name from Login as l");
- System.out.println(list.size());
- }
- }
我只是测试执行main函数就报错误>>>
java 代码
- Exception in thread "main" java.lang.NullPointerException
- at com.dn.dao.BaseDAO.main(BaseDAO.java:122)
不知道该怎么解决啊..请大家..本人刚用hibernate时间不是蛮长..
谢谢..
评论
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>
谢谢大家...
liusong1111
2007-10-27
1楼:哦
2楼:霍
3楼:厚
4楼:哈
5楼:嘿
纯属倒乱,请BS~
2楼:霍
3楼:厚
4楼:哈
5楼:嘿
纯属倒乱,请BS~
Qieqie
2007-10-27
过客给您的几个问题
1、
既然使用了HibernateDaoSupport ,还有什么理由写自己的openSession()方法?
2、
只要new 一个DAO,就能连上心中想要的那个数据库?
(默默念到:我想连到美国国防部的那个数据库)
由此,我可以判断,你很痛苦。看贴的我也很郁闷。
1、
既然使用了HibernateDaoSupport ,还有什么理由写自己的openSession()方法?
2、
只要new 一个DAO,就能连上心中想要的那个数据库?
(默默念到:我想连到美国国防部的那个数据库)
由此,我可以判断,你很痛苦。看贴的我也很郁闷。
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)
急切盼望解决哈...
neitnaco
2007-10-26
那我现在该怎么操作呢...这个大哥可以说滴清楚点哈..
抛出异常的爱
2007-10-26
session还没开。。。。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 4430 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
我的相册
很酷的图片哦.
共 1 张
共 1 张
最近加入圈子
最新评论
-
为什么要用strust.hiberna ...
框架说白了就是JAVA工作者多年以来总结出的一些开发标准。让我们可以以成功的经验 ...
-- by neitnaco -
JBuilder编译和运行都没问 ...
原来是我机器上安装嘞两个版本的jdk版本.机器环境是jdk1.5的版本.然后jb ...
-- by neitnaco -
jsp+servlet上传
neitnaco 写道引用 还有人关注这个帖子吗,谢谢。用url在哪儿传值阿? ...
-- by assemble -
jsp+servlet上传
引用 baichunlin 3 天前 建议不要使用jspsmartu ...
-- by neitnaco -
jsp+servlet上传
建议不要使用jspsmartupload,它只能上传50M以内的文件
-- by baichunlin






评论排行榜