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

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

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

    posts - 66,  comments - 40,  trackbacks - 0
    ?

    在初學(xué)Hibernate的時(shí)候就聽說此技術(shù)對View支持的不是很好。因?yàn)槲乙矝]有用到也就沒有多想。后來因?yàn)楣こ绦枰坏貌粚Υ俗饕环芯?。最終找到了一條可行的解決方案。特此總結(jié),共大家分享。
    一、思路
    問題:
    以往用Hibernate處理View時(shí)發(fā)生的困難主要集中在這兩方面:
    View是沒有主鍵
    由于View是由select語句生成,所以不存在任何主鍵。也就無法對其映射。
    Hibernate必須對要操作的表進(jìn)行po封裝
    Hibernate要求對數(shù)據(jù)庫的操作都是通過pojo映射來實(shí)現(xiàn)的。也就是說無法對某個(gè)View直接讀取而不對其進(jìn)行映射。
    解決:
    要解決以上問題,我采取一下方案:
    在建立View的時(shí)候生成類似主鍵的字段
    通過其他手段建立類似主鍵的字段。
    在映射po的時(shí)候手動(dòng)把這個(gè)字段改為主鍵
    將虛擬字段改為主鍵。根據(jù)虛擬的情況給以不同的自增長類型。
    二、實(shí)現(xiàn)
    我是在Oracle+Tomcat環(huán)境下測試成功的。
    下面詳細(xì)介紹一下步驟。
    建立視圖

    代碼
    createorreplaceviewv_user_perm
    (id,userid,moduleid)
    as
    selectrownum,a.id,c.id
    fromsysusera,user_permb,module c
    wherea.id=b.userid
    andb.moduleid=c.id

    這個(gè)視圖是從兩個(gè)表中分別取出id,然后我將生成的視圖的行號作為id處理。
    建立xml
    代碼
    <?xmlversion="1.0"encoding="UTF-8"?>
    <!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/Hibernate Mapping DTD 2.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
    <hibernate-mapping>
    <class name="com.fulong.journal.cad.po.perm.VUserPerm"table="V_USER_PERM"schema="JCAD">
    <idname="id"column="ID"type="long">
    <generatorclass="increment"/>
    </id>
    <property name="userid" column="USERID" type="string" length="32" not-null="true"
    />
    <propertyname="moduleid"column="MODULEID"type="string"length="32"not-null="true"/>
    </class>
    <
    /hibernate-mapping>

    建立java
    代碼

    importjava.io.Serializable;
    importorg.apache.commons.lang.builder.ToStringBuilder;

    /** @author Hibernate CodeGenerator */
    publicclass VUserPermimplementsSerializable{

    /** persistent field */
    privatelongid;

    /** persistent field */
    privateStringuserid;

    /** persistent field */
    privateStringmoduleid;

    /** full constructor */
    publicVUserPerm(Stringuserid,Stringmoduleid){
    this.userid=userid;
    this.moduleid=moduleid;
    }

    /** default constructor */
    publicVUserPerm(){
    }
    publiclonggetId(){
    returnthis.id;
    }

    publicvoidsetId(longid){
    this.id=id;
    }

    publicStringgetUserid(){
    returnthis.userid;
    }

    publicvoidsetUserid(Stringuserid){
    this.userid=userid;
    }

    publicStringgetModuleid(){
    returnthis.moduleid;
    }

    publicvoidsetModuleid(Stringmoduleid){
    this.moduleid=moduleid;
    }

    publicStringtoString(){
    returnnewToStringBuilder(this)
    .toString();
    }

    }


    這樣就一個(gè)把一個(gè)視圖當(dāng)成表來查詢了。不過插入是不可能的了。&#61514;
    大家有什么看法可以一起討論。

    posted on 2006-09-12 11:22 happytian 閱讀(1745) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    Welcome here, my friend!

    常用鏈接

    留言簿(12)

    隨筆檔案(66)

    文章分類

    文章檔案(63)

    web

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 89137
    • 排名 - 647

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产免费人视频在线观看免费| 嫖丰满老熟妇AAAA片免费看| 亚洲 综合 国产 欧洲 丝袜| 国产区图片区小说区亚洲区| 日韩在线看片免费人成视频播放| 亚洲日本天堂在线| 青青草国产免费久久久下载| 亚洲精品天堂无码中文字幕| 日美韩电影免费看| 视频一区在线免费观看| 亚洲美女在线国产| 99久久国产精品免费一区二区| 久久精品国产亚洲av日韩| 精品久久8x国产免费观看| 亚洲伊人久久大香线蕉| 精品少妇人妻AV免费久久洗澡| 国产成人高清亚洲一区久久| 亚洲五月午夜免费在线视频| a级成人毛片免费视频高清| 亚洲AV天天做在线观看| 亚洲视频在线观看免费视频| 亚洲国产系列一区二区三区| 午夜亚洲av永久无码精品| 免费人成在线观看网站| 亚洲区精品久久一区二区三区| 永久中文字幕免费视频网站| 一级特级aaaa毛片免费观看| 亚洲第一中文字幕| 日韩毛片无码永久免费看| 中文字幕手机在线免费看电影| 337p日本欧洲亚洲大胆艺术| 色妞WWW精品免费视频| 丰满妇女做a级毛片免费观看| 亚洲av最新在线网址| 免费av欧美国产在钱| www永久免费视频| 亚洲三级视频在线观看| 亚洲国产精品无码久久青草| 97国产在线公开免费观看| 亚洲国产精品精华液| 亚洲AV无码欧洲AV无码网站|