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

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

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

    posts - 15,  comments - 4,  trackbacks - 0
    -------------------------------------------------------------------
    @NotFound(action=NotFoundAction.IGNORE)

    使用hibernate
    注解配置實體類的關(guān)聯(lián)關(guān)系,在many-to-one,one-to-one關(guān)聯(lián)中,一邊引用自另一邊的屬性,如果屬性值為某某的數(shù)據(jù)在數(shù)據(jù)庫不存在了,hibernate默認會拋出異常。解決此問題,加上如下注解就可以了:
    @NotFound(action=NotFoundAction.IGNORE),意思是找不到引用的外鍵數(shù)據(jù)時忽略,NotFound默認是exception

    -------------------------------------------------------------------
    cascade = CascadeType.REFRESH,cascade=CascadeType.ALL

    cascade表示級聯(lián)操作  


       CascadeType.MERGE級聯(lián)更新:若items屬性修改了那么order對象保存時同時修改items里的對象。對應(yīng)EntityManager的merge方法

     
       CascadeType.PERSIST級聯(lián)刷新:獲取order對象里也同時也重新獲取最新的items時的對象。對應(yīng)EntityManager的refresh(object)方法有效。即會重新查詢數(shù)據(jù)庫里的最新數(shù)據(jù)  
      

      CascadeType.REFRESH級聯(lián)保存:對order對象保存時也對items里的對象也會保存。對應(yīng)EntityManager的presist方法  
      

      CascadeType.REMOVE級聯(lián)刪除:對order對象刪除也對items里的對象也會刪除。對應(yīng)EntityManager的remove方法  

    CascadeType.PERSIST只有A類新增時,會級聯(lián)B對象新增。若B對象在數(shù)據(jù)庫存(跟新)在則拋異常(讓B變?yōu)槌志脩B(tài))

    CascadeType.MERGE指A類新增或者變化,會級聯(lián)B對象(新增或者變化)

    CascadeType.REMOVE只有A類刪除時,會級聯(lián)刪除B類;

    CascadeType.ALL包含所有;

    CascadeType.REFRESH沒用過。

    綜上:大多數(shù)情況用CascadeType.MERGE就能達到級聯(lián)跟新又不報錯,用CascadeType.ALL時要斟酌下CascadeType.REMOVE

    @Fetch:

    定義了加載關(guān)聯(lián)關(guān)系的獲取策略. FetchMode 可以是

    SELECT (在需要加載關(guān)聯(lián)的時候觸發(fā)select操作),     SUBSELECT(只對集合有效,使用了子查詢策略,詳情參考Hibernate參考文檔)

    JOIN (在加載主實體(owner entity)的時候使用SQL JOIN來加載關(guān)聯(lián)關(guān)系).

    JOIN 將覆寫任何延遲屬性 (通過 JOIN策略加載的關(guān)聯(lián)將不再具有延遲性).



    -------------------------------------------------------------------
    fetch=FetchType.LAZY
    Hibernate的數(shù)據(jù)加載方式:
    1.即時加載 immediately loading

           實體加載完成后,立即加載其關(guān)聯(lián)的數(shù)據(jù)。
    2.延遲加載lazy loading

           實體相關(guān)聯(lián)的數(shù)據(jù)在第一次訪問時再進行讀取。
    3.預(yù)先加載 eager loading

            與immediately loading類似,但實體和相關(guān)聯(lián)的數(shù)據(jù)是通過一條sql同時讀取。
    4.批量加載 batch loading
            ?



    ------------------------------------------------------------------
    EntityManager 的API
    下面是EntityManager的一些主要的接口方法:
    void persist(Object entity)
          通過調(diào)用EntityManager的persist()方法,新實體實例將轉(zhuǎn)換為受控狀態(tài)。這意謂著當(dāng)persist()方法所在的事務(wù)提交時,實體的數(shù)據(jù)將保存到數(shù)據(jù)庫中。如果實體已經(jīng)被持久化,那么調(diào)用persist()操作不會發(fā)生任何事情。如果對一個已經(jīng)刪除的實體調(diào)用persist()操作,刪除態(tài)的實體又轉(zhuǎn)變?yōu)槭芸貞B(tài)。如果對游離狀的實體執(zhí)行persist()操作,將拋出IllegalArgumentException。 在一個實體上調(diào)用persist()操作,將廣播到和實體關(guān)聯(lián)的實體上,執(zhí)行相應(yīng)的級聯(lián)持久化操作;

    void remove(Object entity)
          通過調(diào)用remove()方法刪除一個受控的實體。如果實體聲明為級聯(lián)刪除(cascade=REMOVE 或者cascade=ALL ),被關(guān)聯(lián)的實體也會被刪除。在一個新建狀態(tài)的實體上調(diào)用remove()操作,將被忽略。如果在游離實體上調(diào)用remove()操作,將拋出IllegalArgumentException,相關(guān)的事務(wù)將回滾。如果在已經(jīng)刪除的實體上執(zhí)行remove()操作,也會被忽略;

    void flush()
          將受控態(tài)的實體數(shù)據(jù)同步到數(shù)據(jù)庫中;

    T merge(T entity)
          將一個游離態(tài)的實體持久化到數(shù)據(jù)庫中,并轉(zhuǎn)換為受控態(tài)的實體;

    T find(Class entityClass, Object primaryKey)
          以主鍵查詢實體對象,entityClass是實體的類,primaryKey是主鍵值,如以下的代碼查詢Topic實體: Topic t = em.find(Topic.class,1); Query createQuery(String qlString) 根據(jù)JPA的查詢語句創(chuàng)建一個查詢對象Query,如下面的代碼:
    Query q= em.createQuery(""SELECT t FROM Topic t WHERE t.topicTitle LIKE :topicTitle")"); Query createNativeQuery(String sqlString)
    使用本地數(shù)據(jù)庫的SQL語句創(chuàng)建一個Query對象,Query通過getResultList()方法執(zhí)行查詢后,返回一個List結(jié)果集,每一行數(shù)據(jù)對應(yīng)一個Vector。
    使用本地數(shù)據(jù)庫的SQL語句創(chuàng)建一個Query對象,Query通過getResultList()方法執(zhí)行查詢后,返回一個List結(jié)果集,每一行數(shù)據(jù)對應(yīng)一個Vector。
    看來要學(xué)習(xí)的東東還有好多啊~~努力吧!


     

    posted @ 2013-03-05 11:51 老天 閱讀(3893) | 評論 (1)編輯 收藏
    Struts2的下載地址:
    http://struts.apache.org/download.cgi
    目前建議下載版本:2.2.1GA版

    Hibernate下載地址:
    http://www.hibernate.org/downloads
    目前建議下載版本:3.6.0 Final版

    Spring的下載地址:
    http://www.springsource.org/download
    目前建議下載版本:穩(wěn)定版3.0.5

     
     
     
    2013-1-15  
    1、struts2  top關(guān)鍵字理解。 
    1).top 指代當(dāng)前迭代元素,可以為對象;
    2).這里的top可用[0].top替代,但不能使用[0];[0]代表整個棧對象。如果單純調(diào)用[0]將會調(diào)用其 toString()方法輸出對象信息;



    2、刪除信息時錯誤日志:
    java.lang.IllegalArgumentException: Removing a detached instance

     Detached - a detached instance is an object that has been persistent, but its Session has been closed. The reference to the

          object is still valid, of course, and the detached instance might even be modified in this state. A detached instance can be

          reattached to a new Session at a later point in time, making it (and all the modifications) persistent again

          現(xiàn)在應(yīng)該明白了吧,在刪除之前把這個Detached instance綁定到當(dāng)前的Sesssion,在用當(dāng)前Sesssion刪除此instance。修改后的代碼如


    解決辦法:
    public void delete(SASVo  vo) {
                   entityManager.remove( entityManager.merge(vo));
            }
    posted @ 2013-01-15 16:54 老天 閱讀(384) | 評論 (1)編輯 收藏
    <2013年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿

    隨筆檔案

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 精品香蕉在线观看免费| 97人妻精品全国免费视频| 成人免费毛片内射美女APP| 亚洲综合色丁香麻豆| 免费专区丝袜脚调教视频| 亚洲精品456在线播放| 最近在线2018视频免费观看| 亚洲国产精品久久人人爱| 免费国产黄网站在线观看视频| 久久精品国产亚洲AV无码麻豆 | 日韩精品视频在线观看免费| 国产婷婷高清在线观看免费| 国产成人综合久久精品亚洲| 亚洲国产小视频精品久久久三级 | 亚洲精品无码久久一线| 国内永久免费crm系统z在线 | 亚洲日本精品一区二区| 18女人毛片水真多免费| 国产精品亚洲片在线va| 免费看少妇作爱视频| 国产激情久久久久影院老熟女免费| 国产日产亚洲系列最新| 99热在线精品免费播放6| 亚洲AV无码乱码麻豆精品国产| 女人18毛片a级毛片免费视频| 看全免费的一级毛片| 亚洲国产精品SSS在线观看AV| 成人浮力影院免费看| 日韩国产欧美亚洲v片 | 国产美女无遮挡免费视频网站| 无码毛片一区二区三区视频免费播放| 亚洲国产精品高清久久久| 日韩精品福利片午夜免费观着| 美女视频黄视大全视频免费的| 亚洲精品无码精品mV在线观看| 99久久久国产精品免费无卡顿| 国产精品亚洲专一区二区三区| 亚洲第一区香蕉_国产a| 小小影视日本动漫观看免费| 你懂的免费在线观看| 亚洲熟妇丰满xxxxx|