hibernate 多对多删除 中间表记录还在

问题描述

请问一下hibernate 多对多删除一方的记录的时候,为什么中间表的记录没有跟着删除呢,但是我在存入的时候,中间表记录就自动生成了啊 问题补充:UserGroup表private Set<Paper> papers = new HashSet<Paper>();@ManyToMany@JoinTable(name="tm_paper_usergroup",joinColumns={@JoinColumn(name="usergroupid")},inverseJoinColumns={@JoinColumn(name="paperid")})public Set<Paper> getPapers() {return papers;}public void setPapers(Set<Paper> papers) {this.papers = papers;}Paper表@ManyToMany(mappedBy="papers")public Set<UserGroup> getUsergroups() {return usergroups;}public void setUsergroups(Set<UserGroup> usergroups) {this.usergroups = usergroups;}关联表自己生成,在删除paper记录的时候,删除失败,报错信息如下 org.springframework.dao.DataIntegrityViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`tomexam2/tm_paper_usergrou`, CONSTRAINT `FKFB613635E7937D05` FOREIGN KEY (`paperid`) REFERENCES `tm_paper` (`id`)); SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`tomexam2/tm_paper_usergrou`, CONSTRAINT `FKFB613635E7937D05` FOREIGN KEY (`paperid`) REFERENCES `tm_paper` (`id`))如果自己创建一张表tm_paper_usergroup 主键id ,usergroupid,paperid,如果这样,在删除paper的时候删除成功,但是关联表tm_paper_usergroup的关联记录还在

解决方案

Hibernate在删除多对多关联时,默认是将关联表中的一方置为空,这样就达到解除关系的目的,顶多是你的数据库表中存在了一些无意义的数据而已,你可以在删除的方法中手动删除关联表中的记录
解决方案二:
http://dreamzhong.iteye.com/blog/1273157

时间: 2024-11-03 21:12:50

hibernate 多对多删除 中间表记录还在的相关文章

hibernate多对多删除中间表

问题描述 我要直接删除中间表的记录是怎么做呢?代码应该怎么改?String[] permNos=permissionNos.split(",");Person person=personService.getPerson(Integer.parseInt(personNos));//根据id查询用户System.out.println("删除前的"+person.getPermissions().size()); //根据用户读取数据 for(Iterator it

mysql支持跨表delete删除多表记录_Mysql

前几天写了Mysql跨表更新的一篇总结,今天我们看下跨表删除. 在Mysql4.0之后,mysql开始支持跨表delete. Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录. 假定我们有两张表:Product表和ProductPrice表.前者存在Product的基本信息,后者存在Product的价格. 第一种跨表删除的方式是不用join,在delete时指定用半角逗号分隔多个表来删除,如下sql语句: 复制代码 代码如下: DELETE p.

Hibernate 多对多关联 中间表有多个字段如何配置

问题描述 例如 :学生 与课程之间是多对多关联,中间表不仅有学生表和课程表的主键,中间表还有其他字段(成绩等),该如何配置,用JPA如何设置,望大家指点指点| 解决方案 一个事例:LoginInfo.hbm.xml<hibernate-mapping><class name="com.ucit.ca.webApp.po.LoginInfo" table="CAS_USER_MODULE_INFO"><id name="lid&

Hibernate多对多中间关系表有属性(其他字段)的annotation配制方法

问题描述 如题:只知道xml的配置,但不知道用注解如何配制 解决方案 解决方案二:看来是没有人回答了,不过自己解决了.解决方案三:怎么解决的.不会是分解成两个多对一吧

高效快速删除Oracle表中重复记录

以前的一篇删除重复记录的虽然还不错 但是在我遇到重量级的大表时还是显的力不从心,不小心想到一种新的方法 思路1.保存不重复的记录 2.保存重复记录中的一个rowid //3.删除原表中rowid不为步骤2中rowid的记录 ,留下重复数据中的一条 3.找出记录中rowid为步骤2中rowid的记录 4 .1和3数据连接就是所要的数据了 具体操作例子 第一步:www.examw.com SQL> create table xxfgs_sig as (select imeid imeid,max(d

hibernate 如何插入数据到多对多的中间表中

问题描述 hibernate 如何插入数据到多对多的中间表中 hibernate 如何插入数据到多对多的中间表中 关联表已经存在,只是需要在中间表中插入数据 解决方案 全靠自动不用手动,在配置文件里配置好many-to-many的关系 解决方案二: 这种中间表一般都是用手动的..jdbcTemplate来插入的 解决方案三: 使用HibernateCallback,因为该类可以获取到session并且被HibernateCTemplate调用,拿到了session你就应该知道怎么做了. 解决方案

access下如何恢复已经删除的记录;如何恢复已经删除的表、窗体等等对象_Access

问题:     如何恢复已经删除的记录:如何恢复已经删除的表.窗体等等对象 1.我用 DELETE FROM TABLE 删除了一些记录,现在发现误删除了,该如何恢复? 2.我直接手动删除或者用 DROP TABLE 删除了一个表,现在发现是误删除了,该如何恢复? 3.我手动删除了一个窗体,该如何恢复? 4.我删除了记录,可是数据库体积并没有减小,那么是否能找回记录呢?   回答:     1.已经删除的记录是无法恢复的,ACCESS 不是 FOXPRO,MDB 格式不是 DBF 格式,没有逻辑

sql过滤、删除、表中重复记录语句

文章介绍利用having group by 及各种select in 联合查询来实现的多种不同方法的过滤重复记录的sql语名. - 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 代码如下 select * from people where peopleId in (select   peopleId  from   people  group  by   peopleId  having  count(peopleId) > 1) 2.删除表中多余的重复记录,重

如何有条件的分步删除数据表中的记录

数据|条件 如何有条件的分步删除数据表中的记录作者:eygle出处:http://blog.eygle.com日期:February 22, 2005« 自己动手,丰衣足食 | Blog首页 有时候我们需要分配删除数据表的一些记录,分批提交以减少对于Undo的使用,本文提供一个简单的存储过程用于实现该逻辑.你可以根据你的需要进行适当调整,本例仅供参考: SQL> create table test as select * from dba_objects;Table created.SQL>