我有一个包含3个表的数据库:幻灯片,MediaItemsInSlideshows和Mediaitems。我使用hibernate的jsp站点使用这个数据库。 我希望能够删除幻灯片而不删除媒体项目。应删除MediaItemsInSlideshows中的行。
目前,我使用以下代码删除幻灯片。当我使用这个时,幻灯片中使用的所有媒体项都消失了。
Session session = HibernateUtil.getSessionFactory().openSession();
Slideshow s = this.getSlideshowById(id, session);
session.beginTransaction();
session.delete(s);
session.getTransaction().commit();
这是数据库的直观表示:
答案 0 :(得分:1)
删除A会将B中对它的引用设置为null,这是架构禁止的。更改删除顺序的另一种方法是在B中添加反向一对多集合,并进行级联删除。只需删除A即可。 (来源:Deleting of related objects in hibernate)