91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JPA中orphanRemoval 屬性有什么用

發布時間:2021-06-22 18:00:31 來源:億速云 閱讀:1115 作者:Leah 欄目:編程語言

這期內容當中小編將會給大家帶來有關JPA中orphanRemoval 屬性有什么用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

JPA中orphanRemoval 屬性有什么用

JPA定義Model關系中有orphanRemoval 這個參數。其作用您是否了解?

  • orphanRemoval介紹和作用

JPA中orphanRemoval 屬性有什么用

上面截圖的jpa的官方文檔以及jpa規范中明確說明,如果javaBean中父實體和子實體之間有一對一或一對多的級聯關系的時候,如果我們想要刪除父實體,也必須要級聯刪除子實體,需要被刪除的級聯關系中的子實體則被稱為孤兒實體。

orphanremoval屬性的主要作用就是標記是否可以刪除孤兒實體,假設我們這里有一個訂單的案例,訂單下面有許多行記錄,假設我們刪除其中的一行記錄的話,需要被刪除的這一行記錄就被稱作是孤兒,當我們設置這個屬性為true的時候,意思就是我們可以從這個訂單的所有記錄中刪除標記為孤兒的這條記錄。

  • 屬性詳解和案例代碼

@OneToMany(mappedBy="parent",targetEntity=Child.class, cascade={CascadeType.ALL},orphanRemoval=true)privateList<Child> children= newArrayList<Child>();@OneToMany(mappedBy="parent",targetEntity=Son.class, cascade={CascadeType.ALL},orphanRemoval=true)privateList<Son> son= newArrayList<Son>();Fistly,we save One Parent have two Son and two Child in database:Parent p = newParent();Child c1 = newChild();Child c2 = newChild();Son s1 = newSon();Son s2 = newSon();p.setParentName("AAA");c1.setChildName("BBB");c2.setChildName("CCC");s1.setName("s1");s2.setName("s2");//set relationshipp.getChildren().add(c1);p.getChildren().add(c2);p.getSon().add(s1);p.getSon().add(s2);c1.setParent(p);c2.setParent(p);s1.setParent(p);s2.setParent(p);em.merge(p);so we can see it in database:mysql> select * from Parent;+----+------------+| id | parentName |+----+------------+| 1 | AAA |+----+------------+ mysql> select * from Child;+----+-----------+-----------+| id | childName | parent_id |+----+-----------+-----------+| 1 | BBB | 1 || 2 | CCC | 1 |+----+-----------+-----------+mysql> select * from Son;+----+------+-----------+| id | name | parent_id |+----+------+-----------+| 1 | s1 | 1 || 2 | s2 | 1 |+----+------+-----------+then we can use merge to remove orphaned entities .At first, we should ceate a test Data.Parent p = newParent();//set id to the entity,when there is correspongding record in database,just update.p.setId(1);Child c1 = newChild();c1.setId(1);c1.setChildName("c3");Son s2 = newSon();s2.setId(2);s2.setName("c4");//new Child and Son Enity,and add it to Parent's List.Without id,so jpa will save a new record for them ,id auto-increment.Child c = newChild();c.setChildName("childNew");c.setParent(p);p.getChildren().add(c); Son s = newSon();s.setName("sonNew");s.setParent(p);p.getSon().add(s);//at last,merge the root Entity Parent,when we set the orphanRemoval truein @OneToMany,the Child(id=2) Son(id=1) entity will be deleted when the line item is removed from the order.em.merge(p);then we can see it in database:mysql> select * from Parent;+----+------------+| id | parentName |+----+------------+| 1 | AAAnew |+----+------------+mysql> select * from Child;+----+-----------+-----------+| id | childName | parent_id |+----+-----------+-----------+| 1 | c3 | 1 || 3 | childNew | 1 |+----+-----------+-----------+record with id=2 is removed.mysql> select * from Son;+----+--------+-----------+| id | name | parent_id |+----+--------+-----------+| 2 | c4 | 1 || 3 | sonNew| 1 |+----+--------+-----------+record with id=1 is removed.
  • 與cascade的關系

二者的作用范圍不一樣,cascade的作用范圍是數據庫,當cascade屬性設置了delete時,當刪除級聯關系中的子集時,順便也會將數據庫中對應的數據刪除。orphanremoval屬性的作用范圍僅僅是java應用代碼中,做級聯刪除的操作也只適用于java實體代碼范疇,它可以清楚javabean的級聯關系,但并不能影響數據庫的數據,只要cascade不點頭是無法刪除掉數據庫的數據的


上述就是小編為大家分享的JPA中orphanRemoval 屬性有什么用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰坪| 张家口市| 米泉市| 靖安县| 建宁县| 项城市| 和田市| 扎赉特旗| 溧水县| 朔州市| 腾冲县| 佛冈县| 滨州市| 邢台市| 岗巴县| 房山区| 保康县| 班戈县| 乐亭县| 云安县| 军事| 葫芦岛市| 英山县| 柳江县| 长岛县| 南江县| 石阡县| 昂仁县| 洪雅县| 红原县| 星子县| 吴川市| 东宁县| 富阳市| 昌江| 射洪县| 咸丰县| 天镇县| 富民县| 太和县| 神木县|