com.tc.helper.impl.spring.UserHelperSpringImpl.deltcuser(UserHelperSpringImpl.java:128)
??
这一行是什么?

解决方案 »

  1.   

    public int update(TcUser teuser) {
            try {
             System.out.println("deuser's getLoginid()"+teuser.getLoginid());
                getHibernateTemplate().update(teuser);
                return 1;
            } catch (DataAccessException e) {
                // TODO 自动生成 catch 块
                e.printStackTrace();
                System.out.println("update exception!");
                return 0;
            }
        }有exception但是
    public DeUser findDeUserByPasswd(String loginid, String passwd)
        {
          Object[] values = {loginid, passwd};
             try{
             List l = getHibernateTemplate().find(LOADDE_BY_PASSWD, values);
             if (l.size() == 0) {
               return null;
             }
             else {
               return (DeUser) l.get(0);
             }
             }
             catch(DataAccessException e){
      e.printStackTrace();
       return null;
             }
         }
    没有错误呀!
    请你指正
      

  2.   

    public class UserHelperSpringImpl extends HibernateDaoSupport implements UserHelper {
       
    private Session session; 
        private static final String LOADTE_BY_PASSWD =
            "from TcUser teuser where teuser.loginid = ? and teuser.password = ?";
        private static final String LOADDE_BY_PASSWD =
            "from DeUser deuser where deuser.loginid = ? and deuser.password = ?";
        
        
        public TcUser findUserByPasswd(String loginid, String passwd) {
            
            Object[] values = {loginid, passwd};
            try{
            List l = getHibernateTemplate().find(LOADTE_BY_PASSWD, values);
            if (l.size() == 0) {
              return null;
            }
            else {
              return (TcUser) l.get(0);
            }
            }
            catch(DataAccessException e){
    e.printStackTrace();
     return null;
            }
    }
        public DeUser findDeUserByPasswd(String loginid, String passwd)
        {
          Object[] values = {loginid, passwd};
             try{
             List l = getHibernateTemplate().find(LOADDE_BY_PASSWD, values);
             if (l.size() == 0) {
               return null;
             }
             else {
               return (DeUser) l.get(0);
             }
             }
             catch(DataAccessException e){
      e.printStackTrace();
       return null;
             }
         }
       
        public int update(DeUser deuser) {
            try {
             System.out.println("deuser's getLoginid()"+deuser.getLoginid());
                getHibernateTemplate().update(deuser);
                return 1;
            } catch (DataAccessException e) {
                // TODO 自动生成 catch 块
                e.printStackTrace();
                System.out.println("update exception!");
                return 0;
            }
        }    public int update(TcUser teuser) {
            try {
             System.out.println("deuser's getLoginid()"+teuser.getLoginid());
                getHibernateTemplate().update(teuser);
                return 1;
            } catch (DataAccessException e) {
                // TODO 自动生成 catch 块
                e.printStackTrace();
                System.out.println("update exception!");
                return 0;
            }
        }
    /* (非 Javadoc)
     * @see com.tc.helper.UserHelper#update(com.tc.view.DeUser)
     */
    /* (非 Javadoc)
     * @see com.tc.helper.UserHelper#teuserList()
     */
    /* (非 Javadoc)
     * @see com.tc.helper.UserHelper#teuserListByLoginid(java.lang.String, java.lang.String)
     */

        public int addde(DeUser deuser)
        {   System.out.println("addde addde addde addde+++++here++++++");
    getHibernateTemplate().save(deuser);
    return 1;
    }
    /* (非 Javadoc)
     * @see com.tc.helper.UserHelper#deltcuser(java.lang.String, java.lang.String)
     */
    public int deltcuser(String loginid, String password) {
    try{
    Object[] values = {loginid, password};

    Type[] types={new StringType(),new StringType()};
    System.out.println("delete teuser here! teuser's loginid is"+loginid);
    getHibernateTemplate().delete(LOADTE_BY_PASSWD,values,types);
     return 0;}
    catch(NullPointerException   e){
     e.printStackTrace();
     System.out.println("this is the NullPointerException!");
    return 1;
    }
    }

      
    }
    只有find()没有NullPointerException
      

  3.   

    看你的代码也看不出什么,你把exception信息全部贴出来
    还有
    把UserHelperSpringImpl的全部代码贴出来,不然看不到你的128行是什么
    (UserHelperSpringImpl.java:128)
      

  4.   

    package com.tc.helper;import com.tc.view.TcUser;
    import com.tc.view.DeUser;/**
     * @author poley
     *
     * TODO 要更改此生成的类型注释的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    public interface UserHelper {
        public TcUser findUserByPasswd(String loginid, String passwd);
        public DeUser findDeUserByPasswd(String loginid,String passwd);
        public int update(DeUser deuser);
        public int addde(DeUser deuser);
        public int update(TcUser teuser);
        public int deltcuser(String loginid,String password);
    }
    错在getHibernateTemplate().update(teuser);错
    getHibernateTemplate().delete(LOADTE_BY_PASSWD,values,types);错System.out.println("deuser's getLoginid()"+teuser.getLoginid());//这里还可以获取结果的还正确
                getHibernateTemplate().update(teuser);错
      

  5.   

    我MSN是[email protected]
    我可以将所有的代码发给你
      

  6.   

    getHibernateTemplate()
    这个值是空的
    你可以打印一下看看
      

  7.   

    是的为什么呢!
    package com.tc.helper.impl.spring;import java.util.List;
    import net.sf.hibernate.Session;
    import net.sf.hibernate.type.*;
    import org.springframework.dao.DataAccessException;
    import org.springframework.orm.hibernate.support.HibernateDaoSupport;
    import com.tc.helper.UserHelper;
    import com.tc.view.TcUser;
    import com.tc.view.DeUser;
    和XML文件有没有关系
      

  8.   

    一般的,这种错误,不是程序的问题 ,而是你在注入的时候,没有成功!也就是说,比如你有一个 DAO 继承的是 HibernateDaoSupport ,那么这个类需要把 sessionFactory 注入进去。但是,你的 sessionFactory 有可能就是一个 null ,因为 sessionFactory ,需要注入 dataSource,有可能就是你的 datasource有问题。所以,你不要急着进行数据库操作,你可以写一个测试程序,把这些东西,都打印出来,看看,值是否为空!就可以判断,到底在哪个阶段出现了问题!
      

  9.   

    好的,谢谢你的细心指教!我调试一下!
    那为什么find()用来登陆操作行呢!
    不也调用了getHibernateTemplate()?
      

  10.   

    我的删除操作我在捕获nullpointerexception中证明getHibernateTempalte()是空的null
    catch(NullPointerException   e){
     e.printStackTrace();
     System.out.println("lone lone lone lone lone lone!");
    if(getHibernateTemplate()==null)
     System.out.println("this is the NullPointerException!");
    //在控制台被输出
    return 1;
    }
    }
      

  11.   

    一定是你的注入有问题哦..你在配UserHelperSpringImpl 时,,有没有注入你的服务类??
    然后你的服务类有没有注入sessionfactory ...
    还有一个建议,像update 的方法,根本没有必要要写在这儿,应该由服务类来完成.
      

  12.   

    错误找到了现在看起来很好笑!
    在action
    UserHelper helper=new UserHelperSpringImpl ();
    虽然他可以执行update 等操作但并没有获取bean的信息
    改为
    UserHelper helper=getUserHelper()(父类);
     protected UserHelper getUserHelper(){
            return  ServiceLocatorFactory.getServiceLocator().getUserHelper() 
    }
    public class ServiceLocatorSpringImpl implements ServiceLocator {
        private static ServiceLocatorSpringImpl sl = new ServiceLocatorSpringImpl(); public static ServiceLocator newInstance()
    {
    return sl;
    } private BeanFactory getFactory()
    {
    return SpringStrutsPlugin.getBeanFactory();
    //BeanFactory实现了接口和实现的分离
    }

    public UserHelper getUserHelper()
    {  
    return (UserHelper)getFactory().getBean("user");
    }
    还有一个建议,像update 的方法,根本没有必要要写在这儿,应该由服务类来完成.
    我想只要在引用实例;应用接口分离的方法,我想helper也是Dao
    像update 的方法,根本没有必要要写在这儿,应该由服务类来完成.可以说的具体一点吗!

    }最终实现
    还有问题: