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

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

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

    溫馨提示:您的每一次轉載,體現(xiàn)了我寫此文的意義!!!煩請您在轉載時注明出處http://www.tkk7.com/sxyx2008/謝謝合作!!!

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現(xiàn)了我寫此文的意義!!!煩請您在轉載時注明出處http://www.tkk7.com/sxyx2008/謝謝合作!!!

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      215 Posts :: 1 Stories :: 674 Comments :: 0 Trackbacks
     

    Hibernate org.hibernate.PropertyAccessException: exception setting property value with CGLIB異常分析及處理

    異常信息:

    Exception in thread "main" org.hibernate.PropertyAccessException: exception setting property value with CGLIB (set hibernate.cglib.use_reflection_optimizer=false for more info) setter of com.dl.bean.Employee.setDepartment

        at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValuesWithOptimizer(PojoEntityTuplizer.java:215)

        at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:185)

        at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3232)

        at org.hibernate.engine.TwoPhaseLoad.initializeEntity(TwoPhaseLoad.java:129)

        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.doList(Loader.java:2145)

        at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2029)

        at org.hibernate.loader.Loader.list(Loader.java:2024)

        at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)

        at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:308)

        at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:153)

        at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1106)

        at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)

        at com.dl.test.EmployeeTest.main(EmployeeTest.java:26)

    Caused by: net.sf.cglib.beans.BulkBeanException: com.dl.bean.Employee cannot be cast to com.dl.bean.Department

        at com.dl.bean.Employee$$BulkBeanByCGLIB$$a415f505.setPropertyValues(<generated>)

        at org.hibernate.tuple.PojoEntityTuplizer.setPropertyValuesWithOptimizer(PojoEntityTuplizer.java:212)

        ... 15 more

    Caused by: java.lang.ClassCastException: com.dl.bean.Employee cannot be cast to com.dl.bean.Department

        ... 17 more

    遇此異常很老火,當然第一件事就是在googlebaidu一把看能解決吧!

    googlebaidu結果如下:

    查詢結果中包含null的值,對于一些數(shù)字或boolean包含null,定義該項時必須使用wrapper類型,而不能是primitive類型,例如使用Integer而不能是int,Boolean而不能是boolean否則會拋出exception

    結論是:對于屬性在set/get,屬性值為null而出現(xiàn)該異常

    我對此種說法不敢茍同,既然google上有這種說法相比就有它存在的道理。

    從上述語句中我們得出結論:在寫pojo類時最好選用包裝類而不使用java中的基本數(shù)據(jù)類型,以免產生一些莫名其妙的錯誤(建議使用5.0以上的jdk版本)大家一直認為java是面向對象的語言,這句話在jdk1.4以前是有分歧的,大家都知道java8個基本數(shù)據(jù)類型不是對象,所以這么說還不夠嚴謹,直到jdk5.0的誕生,這句話才勉強成立。我想這也是sun公為什么極力推薦使用包裝類的緣故。

    看來還得自己分析這個異常,那么首先從映射文件及pojo類來下手

    Java代碼:

    publicclass Employee {

        private Integer id;

        private String empname;

        private Integer empage;

        private String context;

        private Integer deptid;

        private Department department=new Department();

         //省略set()get()方法

    }

    <hibernate-mapping package="com.dl.bean">

        <class name="Employee" table="employee">

             <id name="id" >

                 <generator class="native"/>

             </id>

             <property name="empname"/>

             <property name="empage"/>

             <property name="context" />

             <property name="deptid" insert="false" update="false"/>

             <many-to-one name="department" column="deptid" cascade="all" class="Employee" /> //此處為錯誤的根源,這個錯誤很隱蔽,不仔細檢查很難發(fā)現(xiàn)

        </class>

        </hibernate-mapping>

    不知道至此大家發(fā)現(xiàn)錯誤了沒,經過本人仔細檢查以及分析以上pojo類及映射文件,發(fā)現(xiàn)在<many-to-one>標簽中class屬性配置出錯了,正確的配置應為:

    <many-to-one name="department" column="deptid" cascade="all" class="Department" />,到此問題徹底解決了,沒什么技術含量,只是記下來,防止更多人走冤枉路

    posted on 2009-11-25 17:56 雪山飛鵠 閱讀(6407) 評論(4)  編輯  收藏 所屬分類: Hibernate

    Feedback

    # re: Hibernate org.hibernate.PropertyAccessException: exception setting property value with CGLIB異常分析及處理 2009-11-25 18:55 天堂露珠
    遇到過class屬性配置錯的,但提示的錯誤不是這樣的。  回復  更多評論
      

    # re: Hibernate org.hibernate.PropertyAccessException: exception setting property value with CGLIB異常分析及處理 2009-11-26 09:12 雪山飛鵠
    @天堂露珠
    還記得你的錯誤嗎?將你的錯誤發(fā)上來,大家一塊研究研究~  回復  更多評論
      

    # re: Hibernate org.hibernate.PropertyAccessException: exception setting property value with CGLIB異常分析及處理 2009-12-12 17:20 興華
    祖國上下就需要你這樣的精神。  回復  更多評論
      

    # re: Hibernate org.hibernate.PropertyAccessException: exception setting property value with CGLIB異常分析及處理 2011-12-07 15:40 lp
    感謝LZ,問題解決的很好!  回復  更多評論
      

    主站蜘蛛池模板: 亚洲大香伊人蕉在人依线| 一级成人生活片免费看| 又粗又黄又猛又爽大片免费| 国产精品免费观看视频| 亚洲AV人无码综合在线观看| 永久免费毛片在线播放| 免费的黄色网页在线免费观看| 亚洲综合国产精品| 国产伦一区二区三区免费 | 免费的黄色网页在线免费观看| 国产国拍亚洲精品mv在线观看| 全免费A级毛片免费看网站| 免费a级毛片无码a∨免费软件| 99久久国产亚洲综合精品| 亚洲精品无码专区在线在线播放 | 国产午夜不卡AV免费| 亚洲中文无码线在线观看| 亚洲人成国产精品无码| 台湾一级毛片永久免费 | 三年片在线观看免费大全电影 | 美女被免费网站91色| 亚洲三级视频在线观看| 国产av无码专区亚洲av果冻传媒 | 亚洲欧洲精品无码AV| 在线a人片天堂免费观看高清| 免费国产在线视频| 美女被免费网站在线视频免费| 亚洲精品午夜视频| 亚洲精品自产拍在线观看| 国产成人免费永久播放视频平台| 99久久久国产精品免费蜜臀| 一个人看的www在线免费视频 | 亚州**色毛片免费观看| 国产99在线|亚洲| 亚洲第一区香蕉_国产a| a级亚洲片精品久久久久久久| 免费乱理伦在线播放| 毛片免费全部播放一级| 亚洲免费网站在线观看| 久久精品电影免费动漫| 日韩av无码免费播放|