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

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

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

    隨筆-112  評論-73  文章-0  trackbacks-0

    今天又深入了了解和測試了一下Hibernate cascade 和 inverse 。

    Inverse

    在Hibernate annotation 中inverse 默認(rèn)值是"true" 當(dāng)配置了mappedBy="…"時就相當(dāng)于inverse="false"了。

    Cascade

    CascadeType類中有這樣幾個常量,ALL、PERSIST、MERGE、REFRESH、REMOVE

    讓代碼說話吧:

    @Entity

    @Table(name = "Users")

    public class User implements java.io.Serializable {

    ?

    ?

    ????private String id;

    ?

    ????private Rose rose;

    ?

    ????public User() {

    ????}

    ?

    ????@Id

    ????@Column(name = "Id", unique = true, nullable = false, insertable = true, updatable = true, length = 5)

    ????public String getId() {

    ????????return this.id;

    ????}

    ?

    ????public void setId(String id) {

    ????????this.id = id;

    ????}

    ?

    ????@ManyToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, fetch = FetchType.LAZY)

    ????@JoinColumn(name = "Roseid", unique = false, nullable = false, insertable = true, updatable = true)

    ????public Rose getRose() {

    ????????return this.rose;

    ????}

    ?

    ????public void setRose(Rose rose) {

    ????????this.rose = rose;

    ????}

    }

    ?

    @Entity

    @Table(name = "Rose")

    public class Rose implements java.io.Serializable {

    ?

    ????private String id;

    ?

    ????private Set<User> users = new HashSet<User>(0);

    ?

    ????public Rose() {

    ????}

    ?

    ????@Id

    ????@Column(name = "Id", unique = true, nullable = false, insertable = true, updatable = true, length = 3)

    ????public String getId() {

    ????????return this.id;

    ????}

    ?

    ????public void setId(String id) {

    ????????this.id = id;

    ????}

    ?

    ????@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.EAGER )

    ????@JoinColumn(name="RoseId")

    ????public Set<User> getUsers() {

    ????????return this.users;

    ????}

    ?

    ????public void setUsers(Set<User> userses) {

    ????????this.users = userses;

    ????}

    ?

    ????public void addUser(User user) {

    ????????user.setRose(this);

    ????????users.add(user);

    ????}

    ?

    當(dāng)在user類中配置成cascade = { CascadeType.PERSIST, CascadeType.MERGE } 時,更新和刪除兩個級聯(lián)時:

    Hibernate: select user_.Id, user_.Enabledel as Enabledel1_, user_.Name as Name1_, user_.Password as Password1_, user_.Roseid as Roseid1_ from ERP.dbo.Users user_ where user_.Id=?

    Hibernate: select rose_.Id, rose_.Enabledel as Enabledel0_, rose_.Name as Name0_, rose_.Parent as Parent0_ from ERP.dbo.Rose rose_ where rose_.Id=?

    Hibernate: delete from ERP.dbo.Users where Id=?

    可以正常刪除!但是代碼要這樣寫:

    ?

    ???????? User user =new User("adm");

    ???????? user.setRose(new Rose("adm"));????//這句不加就不能刪除,提示錯誤。除非數(shù)據(jù)庫不加級聯(lián)限制

    ????????userDao.delete(user);

    ?

    當(dāng)在user類中配置成cascade = { CascadeType.ALL } or cascade={} 時,無法刪除。

    ?

    更新時也類似于這種情況,注意rose類中的addUser(User user)方法。

    ?

    再有fetch = FetchType.EAGER在這里不是延時加載,如果設(shè)置成LAZY,在取得數(shù)據(jù)時怎么做好呢?看其他論壇的方法各有好處也有不好的地方,在找一個更方法。。。

    posted on 2007-05-31 20:52 Libo 閱讀(4833) 評論(3)  編輯  收藏

    評論:
    # re: Hibernate Cascade 和 inverse 2007-06-01 10:04 | 祎恬凡
    很像我同事的文章阿!  回復(fù)  更多評論
      
    # re: Hibernate Cascade 和 inverse 2007-06-01 18:50 | 魚腸劍
    把你同事的文章貼出來看看啊.
    技術(shù)都是一樣的,同一個功能都是那樣配置.沒準(zhǔn)還能和他學(xué)習(xí)學(xué)習(xí)呢.
      回復(fù)  更多評論
      
    # re: Hibernate Cascade 和 inverse 2009-06-09 11:51 | ningle
    你正好說反了吧
    在Hibernate annotation 中inverse 默認(rèn)值是"false" 當(dāng)配置了mappedBy="…"時就相當(dāng)于inverse="true"了。

    mappedBy指定的是不需要維護(hù)關(guān)系的一端  回復(fù)  更多評論
      

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产成人久久笫一页| 国产成人免费一区二区三区| 337p日本欧洲亚洲大胆色噜噜| 中文字幕免费高清视频| 国产精品高清视亚洲一区二区| yy6080久久亚洲精品| 国产偷伦视频免费观看| 亚洲天堂免费在线| 亚洲日韩精品一区二区三区 | 99亚偷拍自图区亚洲| 亚洲国产精品成人AV无码久久综合影院| 精品无码一级毛片免费视频观看| 亚洲黄色在线视频| 亚洲AV无码成H人在线观看 | 无码免费一区二区三区免费播放 | 久久久精品午夜免费不卡| 精品亚洲成在人线AV无码| 亚洲人成网站18禁止一区| 1000部国产成人免费视频| 一级毛片完整版免费播放一区| 亚洲经典在线观看| 亚洲乱码中文字幕综合234| 久草免费在线观看视频| 国产精品免费观看视频| 日本亚洲色大成网站www久久| 亚洲桃色AV无码| 国产在线98福利播放视频免费| 久热免费在线视频| 美女的胸又黄又www网站免费| ass亚洲**毛茸茸pics| 亚洲AV无码久久精品蜜桃| 国产成人一区二区三区免费视频| 精品熟女少妇av免费久久| 成人在线免费视频| 亚洲中文字幕精品久久| 亚洲一区二区三区首页 | 亚洲日韩精品A∨片无码加勒比| 亚洲狠狠久久综合一区77777| 全部免费国产潢色一级| 在线v片免费观看视频| 91福利免费视频|