<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    vickzhu

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      151 隨筆 :: 0 文章 :: 34 評論 :: 0 Trackbacks

            今天又測試了一下搭建了一下SSH框架,但是出了一個問題,當我用get()加載一個對象的時候沒有異常,但是用load()的時候拋出了異常,異常如下:
    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.load(SessionImpl.java:781)
     at org.hibernate.impl.SessionImpl.load(SessionImpl.java:774)
     at org.springframework.orm.hibernate3.HibernateTemplate$3.doInHibernate(HibernateTemplate.java:508)
     at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:372)
     at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:502)
     at org.springframework.orm.hibernate3.HibernateTemplate.load(HibernateTemplate.java:496)
     at com.bestone.SSH.hibernate.LawUserDAO.findByName(LawUserDAO.java:104)
     at com.bestone.SSH.service.impl.LoginServiceImpl.checkLogin(LoginServiceImpl.java:30)
     at com.bestone.SSH.struts.action.LoginAction.execute(LoginAction.java:63)
     at org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:110)
     at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
     at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
     at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
     at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
     at java.lang.Thread.run(Thread.java:619)

            碰到這個問題,我馬上想到了加載數據時load和get的區別:
            1、load總是假定要查詢的數據存在,如果未能發現符合條件的記錄,get方法返回null,而load方法會拋出一個ObjectNotFoundException。
            2、load方法返回實體的代理實例,而get方法永遠直接返回實體類。
            3、load方法可以充分的利用一級緩存和二級緩存中的數據,而get方法則僅僅在一級緩存中進行數據查找,如果沒有發現對應的數據,將越過二級緩存,直接調用sql完成數據讀取(經過我的證實,在hibernate3.2中get()方法是可以查找二級緩存的)。
            仔細看了看錯誤,想來想去應該是生成代理類的時候出現了錯誤。java中生成代理類有兩種形式,一是java動態代理,二是利用cglib生成。而hibernate中實體的代理類是用cglib生成的。
            后來仔細研究了一下jar包,通過jar包源碼發現,原來是cglib-2.1.3.jar和cglib-nodep-2.1_3.jar相沖突,只需要把cglib-2.1.3.jar包刪除就沒有問題了。查看cglib-nodep-2.1_3.jar的源碼我們還發現一個問題,它包含了asm-attrs.jar的全部類,但是使用的包名不同,不知道有沒有沖突,運行程序查看日志,暫時沒有發現什么問題,就留著asm-attrs.jar吧。
            
    posted on 2008-10-22 17:36 筱 筱 閱讀(997) 評論(2)  編輯  收藏

    評論

    # re: org.hibernate.tuple.AbstractEntityTuplizer.createProxy 2009-11-13 13:24 half_moon
    不錯,很詳細,感謝!  回復  更多評論
      

    # re: org.hibernate.tuple.AbstractEntityTuplizer.createProxy 2010-06-20 21:11 侯瓊
    @half_moon
    非常感謝  回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲性色AV日韩在线观看| 久久久亚洲精品无码| 国产精品高清视亚洲精品| 16女性下面扒开无遮挡免费| 激情内射亚洲一区二区三区| 久章草在线精品视频免费观看| 亚洲精品国产精品乱码不卡√ | 久久久久久亚洲精品无码| 成人免费一区二区无码视频| 亚洲熟妇少妇任你躁在线观看| 免费看的成人yellow视频| 无码天堂亚洲国产AV| 亚洲日韩VA无码中文字幕| 东北美女野外bbwbbw免费| 亚洲一二成人精品区| 成人A级毛片免费观看AV网站| 亚洲人成未满十八禁网站| 免费一级大黄特色大片| 久久精品成人免费国产片小草| 亚洲国产精品久久| AA免费观看的1000部电影| 亚洲av综合av一区二区三区| 亚洲AV无码乱码在线观看性色扶| 久久最新免费视频| 亚洲美免无码中文字幕在线| 免费看片A级毛片免费看| 日日躁狠狠躁狠狠爱免费视频| 国产亚洲成av人片在线观看 | 成年女性特黄午夜视频免费看 | 最近在线2018视频免费观看| 亚洲成_人网站图片| va亚洲va日韩不卡在线观看| 成人性做爰aaa片免费看| 亚洲av一本岛在线播放| 国产在线观看免费不卡| 国产麻豆成人传媒免费观看| 亚洲人成在线中文字幕| 免费人成年激情视频在线观看| 久久aⅴ免费观看| 国产亚洲精品仙踪林在线播放| 久久精品国产精品亚洲艾|