Hibernate 聯級刪除操作 java
阿新 • • 發佈:2018-12-03
前體:兩個主體類是一對多的關係,都是主控方;
有兩張表kinds和user 是一對多的關係;
kinds表
user表
關係如下:
如果直接刪除kinds表裡面的資料的話,就會報以下錯誤,因為關聯的user表裡面數據沒有刪除;
hibernate預設的聯級刪除方法如下:
第一種:預設的操作,刪除kinds表中的資料,然後把關聯的user表中的外來鍵列清空,但是不刪除資料
程式碼如下:
package cn.com.test; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import cn.com.dao.Kinds; import cn.com.util.Hibernate_Utils; public class Demo8 { @Test public void demo(){ /*author:命運的信徒 * date:2018/12/3 * aim:hibernate的聯級刪除 * */ //1.建立連線 Session session=Hibernate_Utils.openSession(); //2.開啟事務 Transaction tx=session.beginTransaction(); //3.資料庫操作 //疑問:ll是什麼?是這個類的主鍵 Kinds kk=session.get(Kinds.class, "會計");//這是session的一個方法,通過這個類的主鍵id來得到一個物件 session.delete(kk); tx.commit(); } }
結果如下:
第二種:刪除kinds表中的資料,然後把關聯的user表中的外來鍵列清空,而且刪除資料
對映檔案設定:cascade="delete,save-update"
程式碼如下:
package cn.com.test; import org.hibernate.Session; import org.hibernate.Transaction; import org.junit.Test; import cn.com.dao.Kinds; import cn.com.util.Hibernate_Utils; public class Demo8 { @Test public void demo(){ /*author:命運的信徒 * date:2018/12/3 * aim:hibernate的聯級刪除 * */ //1.建立連線 Session session=Hibernate_Utils.openSession(); //2.開啟事務 Transaction tx=session.beginTransaction(); //3.資料庫操作 //疑問:ll是什麼?是這個類的主鍵 Kinds kk=session.get(Kinds.class, "會計");//這是session的一個方法,通過這個類的主鍵id來得到一個物件 session.delete(kk); tx.commit(); } }