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

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

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

    隨筆-95  評論-31  文章-10  trackbacks-0
    使用MyEclipse hibernate 視圖對ORACLE的視圖進行映射反向生成,比如對ViewResult視圖會生成兩個類,一個hbm.xml文件,其中兩個類名為:ViewResultId和ViewResult  配置文件為ViewResult.hbm.xml。那么使用HibernateTemplate模板類使用find(hql)進行查詢的時候,比如hql="from ViewResult v where v.name='lx'";那么會出現第一個異常(異常內容明天補上。。。)原因是:視圖沒有主鍵,MyEclipse默認生成的是復合主鍵,即<composite-id><key-property></key-property></composite-id>。id由ViewResult類生成,于是將hql修改為:hql="from ViewResult v where v.id.name='lx'";發現可以進行查詢不會報錯了,但是卻又發現查詢的內容為null,這是第二個異常,原因為:MyEclipse默認生成的復合主鍵,<composite=id></composite-id>中間包括了視圖所有的屬性都為復合主鍵即<key-property>屬性</key-property>,因為查詢的記錄里面某個字段為null,而主鍵不能為空,所以導致查詢的記錄全部都null,修改方法為:將視圖中可以作為主鍵的屬性放入<composite-id></composite-id>中,其余的放在外面修改為<property/>,這個時候查詢又會出現,缺少get或者set方法的異常,所以最終的解決方法就是:把視圖當成一個表,按hibernate常規思路進行配置即可解決,配置主鍵生成策略(視圖沒有主鍵,但是你可以根據業務需求找出一個可以當做主鍵的屬性值),然后配置屬性,這樣就可以把視圖當成一個實體用hql來查詢了。
    ps:HibernateTemplate模板沒有提供分頁的查詢,只提供了setMaxResults(int)方法設置每頁顯示記錄數,但是沒有提供setFirstResult(int)設置從哪一行開始查詢,所以使用了doInhibernate(HibernateCallback)進行接口回調直接使用session進行設置查詢。當出現上述問題時候還以為是session關閉,使用了opensessionview過濾 但仍然報錯,最后還是映射問題。

    posted on 2010-09-17 00:04 朔望魔刃 閱讀(5666) 評論(1)  編輯  收藏

    評論:
    # re: 關于hibernate映射視圖若干問題小結 2013-12-24 15:39 | wsl
    請問怎么才能在映射的過程中選擇視圖中的某一列作為主鍵  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 国产精品免费无遮挡无码永久视频| 亚洲乱亚洲乱妇无码| 美女隐私免费视频看| 好男人看视频免费2019中文| 国产.亚洲.欧洲在线| 天天看免费高清影视| 亚洲熟妇成人精品一区| 免费观看大片毛片| 亚洲JLZZJLZZ少妇| 免费国产小视频在线观看| 国内精品乱码卡1卡2卡3免费| 亚洲高清美女一区二区三区| 最近新韩国日本免费观看| 亚洲图片中文字幕| 免费看www视频| 一级毛片在播放免费| 精品亚洲一区二区三区在线观看| aa在线免费观看| 亚洲专区在线视频| 免费精品国偷自产在线在线| 亚洲国产区男人本色| 亚洲国产天堂久久久久久| 在线看片免费人成视频福利| 亚洲精品视频免费看| 成全影视免费观看大全二| 亚洲成在人天堂一区二区| 3344免费播放观看视频| xxx毛茸茸的亚洲| 又黄又爽的视频免费看| a毛片在线还看免费网站| 亚洲精品国产成人中文| 日韩中文无码有码免费视频| 国产黄在线播放免费观看| 亚洲精品在线免费观看视频| 在线观看免费成人| 精品多毛少妇人妻AV免费久久| 亚洲AV永久青草无码精品| 免费毛片在线视频| 免费在线观影网站| 亚洲成_人网站图片| 亚洲中文字幕无码日韩|