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

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

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

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

    雪山飛鵠

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

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      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的值,對于一些數字或boolean包含null,定義該項時必須使用wrapper類型,而不能是primitive類型,例如使用Integer而不能是int,Boolean而不能是boolean否則會拋出exception

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

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

    從上述語句中我們得出結論:在寫pojo類時最好選用包裝類而不使用java中的基本數據類型,以免產生一些莫名其妙的錯誤(建議使用5.0以上的jdk版本)大家一直認為java是面向對象的語言,這句話在jdk1.4以前是有分歧的,大家都知道java8個基本數據類型不是對象,所以這么說還不夠嚴謹,直到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" /> //此處為錯誤的根源,這個錯誤很隱蔽,不仔細檢查很難發現

        </class>

        </hibernate-mapping>

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

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

    posted on 2009-11-25 17:56 雪山飛鵠 閱讀(6406) 評論(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 雪山飛鵠
    @天堂露珠
    還記得你的錯誤嗎?將你的錯誤發上來,大家一塊研究研究~  回復  更多評論
      

    # 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,問題解決的很好!  回復  更多評論
      

    主站蜘蛛池模板: 性生交片免费无码看人| 久久精品国产精品亚洲艾草网| 青青草无码免费一二三区| 直接进入免费看黄的网站| 亚洲精品视频免费看| 亚洲另类激情综合偷自拍图| 免费在线观看亚洲| 大地资源二在线观看免费高清| 久久国产免费观看精品3| 中文字幕永久免费| 午夜在线免费视频 | www在线观看播放免费视频日本| 蜜桃传媒一区二区亚洲AV| 亚洲精品国产免费| 亚洲日本在线看片| 亚洲色成人中文字幕网站 | 一级看片免费视频囗交| 国产亚洲精品美女久久久久久下载| 国产成人精品亚洲2020| 亚洲小说图片视频| 亚洲免费视频播放| 亚洲天堂2016| 亚洲综合成人婷婷五月网址| 亚洲熟妇色自偷自拍另类| 亚洲国色天香视频| 亚洲制服丝袜在线播放| 亚洲国产日韩在线成人蜜芽 | 在线看片免费人成视频久网下载 | 亚洲色无码专区在线观看| 亚洲人成人网站色www| 亚洲熟妇av一区二区三区漫画| 亚洲人成伊人成综合网久久久| 亚洲午夜久久久影院伊人| 亚洲精品国产字幕久久不卡 | 成全动漫视频在线观看免费高清版下载 | jizzjizz亚洲日本少妇| 亚洲免费综合色在线视频| 亚洲色大成WWW亚洲女子| 亚洲高清毛片一区二区| 美女露隐私全部免费直播| 新最免费影视大全在线播放|