日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hibernate的数据删除,更改

發布時間:2025/3/8 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate的数据删除,更改 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

                      其他未給出代碼,請參考上一篇....

一.數據的刪除

方法1.從“多”的一方進行數據的刪除

books.hbm.xml文件不變:

<many-to-one name="publishers" column="publisherId" class="com.entry.Publishers" lazy="false"cascade="save-update"/>

publishers.hbm.xml文件:

<set name="books" lazy="false" cascade="all" inverse="true"> <!-- cascade="save-update" 也可以 --><key column="publisherId" not-null="true"/><one-to-many class="com.entry.Books"/></set>

在MyHibernateDao.java中添加如下代碼:

public Books getBook(int Id){Books book = null;Session session = HibernateSessionFactory.getSession();Transaction tran = session.beginTransaction();book = (Books)session.get(Books.class, new Integer(Id));tran.commit();return book;}public void deleteBook(Books book){Session session = HibernateSessionFactory.getSession();Transaction tran = session.beginTransaction();session.delete(book);tran.commit();}

在HibernateServlet.java中添加如下代碼

Books book1 = dao.getBook(3);book1.getPublishers().getBooks().remove(book1);book1.setPublishers(null);dao.deleteBook(book1);

注意如果沒有book1.getPublishers().getBooks().remove(book1);?book1.setPublishers(null);這兩句,會出現?org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)這個異常,主要是因為Books和Publishers二者的級聯關系。

所以我們可以先將級聯斷開,然后再進行刪除“多”的一方。

方法2.從“一”的這一方進行刪除,這樣的話就是和“一”這一方相關聯的“多”的一方都會被刪除

在HibernateServlet.java中添加如下代碼:

Publishers publisher = dao.getPublisher(1); dao.deletePublisher(publisher);

publishers.hbm.xml 和?books.hbm.xml 不用改變

在MyHibernateDao.java中添加如下代碼:

public Publishers getPublisher(int Id){Publishers publisher = null;Session session = HibernateSessionFactory.getSession();Transaction tran = session.beginTransaction();publisher = (Publishers)session.get(Publishers.class, new Integer(Id));tran.commit();return publisher;}public void deletePublisher(Publishers publisher){Session session = HibernateSessionFactory.getSession();Transaction tran = session.beginTransaction();session.delete(publisher);tran.commit();}

?二.數據的刪除

在MyHibernateDao.java中添加如下代碼:

public void updateBooks(Books book){Session session = HibernateSessionFactory.getSession();Transaction tran = session.beginTransaction();session.update(book);tran.commit();}

在HibernateServlet.java中添加如下代碼

     //更改數據, 更改對應的外鍵Books book1 = dao.getBook(79);//將book1的publisherId替換成46/較為安全的寫法,然而并不知道有什么卵用Publishers px = dao.getPublisher(book1.getPublishers().getPublisherId());px.getBooks().remove(book1);Publishers py = dao.getPublisher(46);py.getBooks().add(book1);/ book1.setPublishers(py);dao.updateBooks(book1);//更改數據,BooksBooks book2 = dao.getBook(79);book2.setTitle("如何成為成功的人士");dao.updateBooks(book2);

其他不變....

轉載于:https://www.cnblogs.com/hujunzheng/p/4620968.html

總結

以上是生活随笔為你收集整理的Hibernate的数据删除,更改的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。