<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
    請問怎么才能在映射的過程中選擇視圖中的某一列作為主鍵  回復  更多評論
      

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


    網站導航:
     
    主站蜘蛛池模板: 国产成人高清亚洲| 日韩在线视频免费看| 国产亚洲精品拍拍拍拍拍| 边摸边吃奶边做爽免费视频网站| 大学生一级特黄的免费大片视频| 亚洲av永久无码精品三区在线4| 免费v片在线观看视频网站| 亚洲视频小说图片| xx视频在线永久免费观看| 亚洲国产成人精品无码一区二区 | 久久精品夜色噜噜亚洲A∨| 无遮挡a级毛片免费看| 亚洲国产精品无码久久久久久曰 | 亚洲砖码砖专无区2023| 在线不卡免费视频| 色吊丝免费观看网站| 国产中文在线亚洲精品官网| 一区在线免费观看| 久久综合亚洲色HEZYO社区| 91麻豆最新在线人成免费观看| 亚洲欧美综合精品成人导航| 国产伦一区二区三区免费| yellow免费网站| 亚洲天堂中文资源| 免费无码A片一区二三区 | 亚洲国产人成精品| 精品国产污污免费网站 | 亚洲av日韩av天堂影片精品| 黄色免费网站网址| 国产亚洲Av综合人人澡精品| 久久综合亚洲色HEZYO国产| 在线成人爽a毛片免费软件| 亚洲中文无码亚洲人成影院| 亚洲一区无码精品色| 中文字幕免费在线观看| 亚洲精品又粗又大又爽A片| 亚洲婷婷五月综合狠狠爱| 日韩精品无码区免费专区 | 亚洲一级免费视频| 亚洲片国产一区一级在线观看| 8888四色奇米在线观看免费看|