1. 程式人生 > >Hibernate的cascade屬性 特別是 cascadeType.all的 作用

Hibernate的cascade屬性 特別是 cascadeType.all的 作用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

1.JPA中的CascadeType.ALL並不等於{CascadeType.PESIST,CascadeType.REMOVE,CascadeType.MERGE,CascadeType.REFRESH}

 

在Hibernate中呼叫session.save() or session.update()並不能觸發 {CascadeType.PESIST,CascadeType.REMOVE,CascadeType.MERGE,CascadeType.REFRESH} 的級聯操作,而能觸發CascadeType.ALL的級聯。如不希望用CascadeType.ALL,需要使用Hibernate自身對 cascade的註解 @Cascade(value=org.hibernate.annotations.CascadeType.SAVE_UPDATE)

 

2.共享主鍵的OneToOne方式不能通過cascade來自動生成識別符號 ,即使聲明瞭@GenericGenerator(name="foreign_key",strategy="foreign",parameters={@Parameter(name="property",value="person")})



  

@Entitypublic class Person implements Serializable {        @Id @GeneratedValue(generator =

"g_id") public String getId() {  return id; }          @OneToOne(cascade = { CascadeType.PERSIST ,CascadeType.ALL})         @JoinColumn(name = "profile_id")  @PrimaryKeyJoinColumn(name="id") public Profile getProfile() {  return profile; }}@Entitypublic class Profile implements Serializable {        @Id @GenericGenerator(name = "foreign_key", strategy = "foreign", parameters = { @Parameter(name = "property", value = "person") }) @GeneratedValue(generator = "foreign_key") public String getId() {  return id; }        @OneToOne(mappedBy = "profile") public Person getPerson() {  return person; } public void setPerson(Person person) {  this.person = person; }}


3.delete-orphan只應用在OneToMany中,能級聯刪除Many集合中的子元素。

   NOTE:JPA並不支援delete-orphan,但並不明白hibernate reference中為什麼可以在OneToMany中新增屬性orphanRemoval=true的屬性。事實上,要用hibernate獨有的註解 @Cascade([email protected]_ORPHAN)來達到此目的。


--------------------------------------------------------------------------------

cascade屬性的可能值有     all: 所有情況下均進行關聯操作,即save-update和delete。     none: 所有情況下均不進行關聯操作。這是預設值。      save-update: 在執行save/update/saveOrUpdate時進行關聯操作。      delete: 在執行delete 時進行關聯操作。      all-delete-orphan: 當一個節點在物件圖中成為孤兒節點時,刪除該節點。比如在一個一對多的關係中,Student包含多個book,當在物件關係中刪除一個book時,此book即成為孤兒節點。
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述