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

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

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

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

    雪山飛鵠

    溫馨提示:您的每一次轉載,體現(xiàn)了我寫此文的意義!!!煩請您在轉載時注明出處http://m.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天天做在线观看| 国产精品亚洲片夜色在线| 99视频免费观看| 亚洲国产精品自在线一区二区| 91视频免费网站| 日本亚洲国产一区二区三区| eeuss影院ss奇兵免费com| 亚洲裸男gv网站| 特级做A爰片毛片免费看无码 | 久久亚洲精品成人无码网站| 无码成A毛片免费| 亚洲精品高清国产麻豆专区| 无码国产精品一区二区免费式直播 | 99麻豆久久久国产精品免费| 亚洲人成网站在线播放vr| 久久久久久免费一区二区三区| 亚洲国产人成网站在线电影动漫 | 免费大片在线观看网站| 人成免费在线视频| 亚洲人成无码网站| 222www免费视频| 亚洲精品无码少妇30P| 国产精品黄页在线播放免费| 一级毛片视频免费| 亚洲AV无码精品色午夜在线观看| 6080午夜一级毛片免费看| 亚洲免费在线视频观看| 国产高清在线精品免费软件| 一区二区三区免费在线视频| 亚洲va中文字幕无码久久不卡| 999国内精品永久免费观看| 精品在线免费视频| 亚洲国产精品无码av| 男女做羞羞的事视频免费观看无遮挡| 亚洲精品乱码久久久久久V| 亚洲综合精品香蕉久久网| 蜜桃AV无码免费看永久| 立即播放免费毛片一级| 久久精品国产亚洲AV网站| 四虎在线免费播放|