`
dingjun1
  • 浏览: 208369 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多对多查询的条件设置和删除问题

阅读更多
select 父 from 父类 父 left join 父.某属性(为set) 子 where 子.属性=XXXXX
一个老师教许多学生,一个学生被许多老师教,一个学生有好多书,同一种书被许多同学拥有.
要查询教拥有书"a"的学生的老师!HQL如何写呀?如何取值?
class teacher{
  String id;
  String name;
  Set students;
}
class student{
  String id;
  String name;
  Set teachers;
  Set books;
}
class book{
  String id;
  String name;
  Set students;
}

SELECT t FROM teacher t join t.students s join s.books b where b.name = 'a'



现有一下3张表:
user 用户表
{
userid 
 username
password
gender
address
.....
}
role 角色表
{
roleid
rolename
roledesc
}
user_role 用户角色表(many to many 的中间表)
{
userid
roleid
}
多对多的相关配置均OK,user表是主控方,cascade="save-update".
现在要求删除一个用户时,其在中间表user_role中的相关记录也被删除,而role角色表

中的记录不被删除。
大家有没有好的解决方法啊??


因为你的是多对多的关系,级联负责的是两个实体之间的 级联关系

而你要删除的关系表
关系是通过inverse来控制的,
比如 A和B多对多 关系表为A_B,
当你要在删除A的时候也要删除他们在A_B中对应的关系记录,
你就需要在B段 的 set b中 设置 inverse="true"

同理 你要在删除B的时候 删除它们之间的关系 就要在A的配置文件的 set节点中 配置

inverse="true";

如果你既要在删除A的时候删除它们之间的关系 也要在删除B的时候删除它们之间的关系

那么 什么都不需要配置 一切默认 就好了

(我说的是在 hibernate3.2上 是这样的 应该3.0之上都是这样的)

实践:hibernate2.1
<hibernate-mapping>

	<class name="com.callcenter.project.feedback.business.FeedBack" table="TBL_INFOR_FEEDBACK">

                <id name="feedBackId" type="string" column="FEEDBACK_ID">
                    <generator class="uuid.hex"/>
                </id>
		...
		
		
		<set name="roles"
			 table="tbl_infor_feedback_role"
			 lazy="true"
		>
			<key column="feedback_id"></key>
			<many-to-many class="com.callcenter.foundation.user.business.Role"
				column="role_id"
			></many-to-many>
		</set>
		
	</class>

session.delete(session.load(FeedBack.class, "8a88884f1ae7a79d011ae7a7aae10002"));

Hibernate: select feedback0_.FEEDBACK_ID as FEEDBAC18_0_ ... from TBL_INFOR_FEEDBACK feedback0_ where feedback0_.FEEDBACK_ID=?

Hibernate: delete from tbl_infor_feedback_role where feedback_id=?

Hibernate: delete from TBL_INFOR_FEEDBACK where FEEDBACK_ID=?


分享到:
评论

相关推荐

    MySql数据库表操作:创建表、删除表、查看表、修改、查询表(详细)、设置表的字符编码

    5.5 带AND的多条件查询 5.6 带OR的多条件插查询 5.7 去重复查询 5.8 对结果排序 5.9 分组查询 5.10 union合并查询 5.11 LIMIT分页查询 5.12 内连接查询和外连接查询 6 设置表的字符编码 表的操作是数据库中的重要...

    php+excel通用课表查询系统 v3.0

    优点特色:特色1二级联动式下拉,避免查询中字没有完全输对而查询不了的问题。二级联动式下拉,避免一级二级不对应而无结果,而浪费时间。特色3操作简单:上传即可使用;无需mysql等数据库支持,无需安装过程。增加...

    精通sql结构化查询语句

    2.2.2 一对一联系 2.2.3 一对多联系 2.2.4 多对多联系 2.3 规范化准则 2.3.1 范式 2.3.2 第一范式 2.3.3 第二范式 2.3.4 第三范式 2.3.5 第四范式 2.4.小结第2篇 数据库管理篇第3章 数据库的相关操作 3.1 创建数据库...

    批量删除用户数据插件插件 for Oblog.rar

    功能简介:1、admin文件夹下更新了admin_index.asp文件,在系统后台首页的“用户等级及设置”中增加了“用户批量删除”项,通过选择查询条件,可进行自动批量删除。2、admin文件夹下新增admin_user_delete1.asp文件...

    易语言间隔时间条件查询

    易语言间隔时间条件查询源码,间隔时间条件查询,高级表格设置列宽,高表行锁定,数据库_读取数据到高级表格,数据库_保存高级表格数据到数据库,数据库_读取数据到列表框,高级表格_交替色显示,删除一个表,查询Access中...

    精通SQL 结构化查询语言详解

    6.2 组合查询条件  6.2.1 AND运算符  6.2.2 OR运算符  6.2.3 AND、OR运算符的组合使用  6.3 IN运算符  6.3.1 IN运算符的使用  6.3.2 IN运算符与OR运算符  6.4 NOT运算符 6.4.1 使用NOT运算符  ...

    SQL查询技巧(范例宝典)

     实例328 对数据进行多条件排序 480  实例329 对统计结果进行排序 482  实例330 按仓库分组统计图书库存(多列) 483  实例331 多表分组统计 484  实例332 使用COMPUTE 485  实例333 使用...

    定时自动删除指定文件夹下文件的Winform应用程序

    ③可以根据系统时间结合(输入删除天数)来进行周期删除指定文件夹下的文件(比如:可以将输入天数设置为90天,且选择系统当前时间则表示删除当前时间下90天以前的文件,该功能用作定期清除日志文件场景十分适合...

    JIRA 从入门到精通.doc

    Issue Settings—&gt; Resolutions,主要是配置开发人员对问题的解决方法状态选择,比如选择这个问题关闭,或者是已经存在,下个版本解决等。这些都是在这里进行配置,如下图,如果你不爽英文的话完全可以全部修改为...

    25175教师获奖管理系统(中小学基础版)v1.0.zip

    查询:对用户进行按指定条件的查询功能。 1.2部门管理 添加:对用户数据进行添加操作。 修改:对用户数据进行修改操作。 删除:对用户数据进行删除。 1.3学期管理 添加:对用户数据进行添加操作。 修改:对...

    ASP理发管理系统设计(源代码+毕设文档).zip

    查询功能也是系统的核心之一,在系统中即有单条件查询和多条件查询,也有精确查询和模糊查询,系统不仅有静态的条件查询,也有动态生成的条件查询,其目的都是为了方便用户使用。系统有完整的用户添加、删除和查询...

    大学计算机课程实验7(经管类).docx

    选择查询功能是根据用户所指定的查询条件,从一个或多个数据表中获取数据并显示结果,可对记录进行分组汇总(如求总计、计数、平均值等)。选择查询结果的形式是一个逻辑上的二维表,表中没有实际数据。 大学计算机...

    spring-boot-templete::kiss_mark:springboot项目实战基础脚手架,提供基础增,减,改,查模板,批量删除,局部刷新,多条件模糊查询,视图切换,设置显示分区,动态分页等功能

    :kiss_mark: spring boot项目实战基础脚手架,提供基础增,减,改,查模板,批量删除,局部刷新,多条件模糊查询,视图切换,设置显示分段,动态分页等功能 技术栈 前端 名称 版本 说明 官网 jQuery的 3.4.1 ...

    asp txt 通用查询系统手机版 v5.9.rar

    1、查询条件设置建议使用姓名/学号/准考证/身份证/工号等,不建议用班级等可能有多种输入的内容。 2、程序中可能有不是你们的网址,你记事本打开对应文件替换为你自己的网址即可。如果没有把握就不要修改。 3、...

    25175报修管理系统 v2.0.rar

    查询:对用户进行按指定条件的查询功能。 1.2部门管理 添加:对用户数据进行添加操作。 修改:对用户数据进行修改操作。 删除:对用户数据进行删除。 查询:对用户进行按指定条件的查询功能。 1.3报修...

    快速查询控件2.0 快捷,明了,直观,易查的查询控件

    5.可保存前一次查询条件以及在需要时进行多条件查询,使用方便,功能强大。 三。安装方法: 1.双击d6或d7文件夹下的ZQComponent打开组件包,在组件包面板上点compile,再点Install则安装完毕。安装完毕后会在...

    springboot客户信息管理系统290107(附源码+数据库)

    市场信息活动模块:创建,修改,删除,条件查询,分页查询,备注 信息线索模块:创建,修改,删除,条件查询,分页查询,备注,关联市场活动,转换线索 信息交易模块:创建交易,修改,删除,条件查询,分页查询,...

    c# 大型完整的房地产信息管理系统,下了的人都说好用!有什么问题提出来,帮你们解决!

    系统操作日志:点击主窗口左侧的"系统设置" →"系统操作日志"按钮,打开系统操作日志窗口,在此可以查询到对数据的修改、删除等有损原始数据的操作,也是对操作员的一种监督。此窗口的数据自动产生,在此只需查询...

    嵩嵩报名系统(多项目版) v4.1

    嵩嵩报名系统多项目版本是一个以asp+...一键智能复制字段字段名称设置输入框内提示文字设置可设置管理才能填写的字段管理字段,可设置用户查询时是否可见支持10几种必备字段类型字段类型可随时切换字段可设置按条件

    VC++中数据库及其相关技术&使用SQL查询、操纵数据库

    并添加记录、使用ADO在数据库中遍历、修改和删除记录、使用ADO Data和DataGrid控件实现遍历、修改、删除、添加、使用ADO直接操作Access数据库、使用ADO向数据库添加BLOB数据(图像)、使用ADO从数据库中读出BLOB数据...

Global site tag (gtag.js) - Google Analytics