Exception in thread "main" java.lang.NullPointerException
at org.hibernate.tuple.AbstractEntityTuplizer.createProxy(AbstractEntityTuplizer.java:372)
at org.hibernate.persister.entity.AbstractEntityPersister.createProxy(AbstractEntityPersister.java:3121)
at org.hibernate.event.def.DefaultLoadEventListener.createProxyIfNecessary(DefaultLoadEventListener.java:232)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:173)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.internalLoad(SessionImpl.java:830)
at org.hibernate.type.EntityType.resolveIdentifier(EntityType.java:266)
at org.hibernate.type.EntityType.resolve(EntityType.java:303)
at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:116)
at org.hibernate.loader.Loader.initializeEntitiesAndCollections(Loader.java:842)
at org.hibernate.loader.Loader.doQuery(Loader.java:717)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.loadEntity(Loader.java:1785)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:47)
at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:41)
at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730)
at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)
at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)
at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)
at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:799)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:792)
at org.springframework.orm.hibernate3.HibernateTemplate$1.doInHibernate(HibernateTemplate.java:470)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
at org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:464)
at org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:458)
at net.itsalon.blog.common.BaseHibernateDao.search(BaseHibernateDao.java:49)
at net.itsalon.blog.daoimpl.BlogDiarySortDaoImpl.main(BlogDiarySortDaoImpl.java:64)我用的Hibernate 和 Spring结合,我保证数据库里有数据,而且代码没有写错的地方~!可是就是报空指针异常,求求各位大虾,小弟快疯了~!

解决方案 »

  1.   

    把你的BaseHibernateDao.java类里的search()方法帖出来看看。还有BlogDiarySortDaoImpl.java的main()方法
      

  2.   

    问题确实特殊,不过下面有方法可以解决:http://www.blogjava.net/TiGERTiAN/archive/2007/10/14/152752.htmllz 有时间可以去看看
      

  3.   

    public Object search(Class clz,Serializable id){
    try {
    return this.getHibernateTemplate().get(clz, id);
    } catch (HibernateException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return null;

    }
    这个是BaseHibernateDao.java类的  search()方法~!
      

  4.   

    public static void main(String args[]){

    //测试往日志分类表里插入一条记录 测试通过
    ApplicationContext ctx=new ClassPathXmlApplicationContext("beans-blog.xml");
    IBlogDiarySortDao blogDiarySortDaoImpl=(IBlogDiarySortDao)ctx.getBean("blogDiarySort");
    BaseHibernateDao baseDao=(BaseHibernateDao)ctx.getBean("baseDao");
    System.out.println(baseDao.search(BlogDiarySort.class, 1));
    }
    这个是我的测试类
      

  5.   

    1.你的hibernate的配置里面是不是有自动创建表的配置
    2.at net.itsalon.blog.common.BaseHibernateDao.search(BaseHibernateDao.java:49) 
      at net.itsalon.blog.daoimpl.BlogDiarySortDaoImpl.main(BlogDiarySortDaoImpl.java:64)
      看一下他们所在的行是否有问题
    3.重启机器试试
    4.包的版本是否匹配
    .......
      

  6.   

    这样试一下:
    public Object search(Long id){ 
    try { 
    return this.getHibernateTemplate().get(BlogDiarySort.class, id); 
    } catch (HibernateException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 

    return null; } public static void main(String args[]){ //测试往日志分类表里插入一条记录 测试通过 
    ApplicationContext ctx=new ClassPathXmlApplicationContext("beans-blog.xml"); 
    IBlogDiarySortDao blogDiarySortDaoImpl=(IBlogDiarySortDao)ctx.getBean("blogDiarySort"); 
    BaseHibernateDao baseDao=(BaseHibernateDao)ctx.getBean("baseDao"); 
    System.out.println(baseDao.search(new Long("1"))); 
    } 这样改了接口,你需要调整其它调用search方法的代码。重构一下吧。
    你不用因为getHibernateTemplate().get()的参数是Class clz,Serializable id,就这样定义调用它的方法:public Object search(Class clz,Serializable id) ,没有这个必要。
      

  7.   

    我的包是2.1.3的,网上说要用2.2的CGLIB.jar文件,可是我不到下载的地方~!
      

  8.   

    我试试~!这样我刚才也写过,可是不行~!我把映射文件里的<many-to-one>和<one-to-many>全删掉好象就没有问题了~!可是不能级联查询了啊!~
      

  9.   

    Exception in thread "main" java.lang.ClassCastException: java.lang.Long
    at org.hibernate.type.IntegerType.set(IntegerType.java:41)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:83)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:65)
    at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1514)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1576)
    at org.hibernate.loader.Loader.doQuery(Loader.java:661)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
    at org.hibernate.loader.Loader.loadEntity(Loader.java:1785)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:47)
    at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:41)
    at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:2730)
    at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:365)
    at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:346)
    at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:123)
    at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:177)
    at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:87)
    at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:862)
    at org.hibernate.impl.SessionImpl.get(SessionImpl.java:799)
    at org.hibernate.impl.SessionImpl.get(SessionImpl.java:792)
    at org.springframework.orm.hibernate3.HibernateTemplate$1.doInHibernate(HibernateTemplate.java:470)
    at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
    at org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:464)
    at org.springframework.orm.hibernate3.HibernateTemplate.get(HibernateTemplate.java:458)
    at net.itsalon.blog.common.BaseHibernateDao.search(BaseHibernateDao.java:51)
    at net.itsalon.blog.daoimpl.BlogDiarySortDaoImpl.main(BlogDiarySortDaoImpl.java:77)
    用您给我写的方法又报这个异常了~!