hibernate hql 关联查询_Hibernate【关联查询篇】

1. Hibernate 关联查询

1.1. 说明

Hibernate框架支持通过配置映射关系实现多表关联查询。

1.2. 类型

关联查询分为:一对一(one-to-one)、一对多(one-to-many)、多对一(many-to-one)、多对多(many-to-many)。

1.3. 关联查询的应用场景

当一个POJO对象中包含了一个对象属性或者集合属性时,使用一般的Hibernate的查询无法完成对象或者集合的映射,此时就需要使用Hibernate的关联查询。

总结:关联查询需要在原先配置的基础上增加对象属性和集合属性的配置关系。

1.4. 准备SQL脚本

SET SESSION FOREIGN_KEY_CHECKS=0;

/* Drop Tables */

DROP TABLE IF EXISTS tb_result;
DROP TABLE IF EXISTS tb_student_identifer;
DROP TABLE IF EXISTS tb_student_teacher;
DROP TABLE IF EXISTS tb_student;
DROP TABLE IF EXISTS tb_teacher;

/* Create Tables */

-- 成绩表
CREATE TABLE tb_result
(
	result_id int NOT NULL AUTO_INCREMENT COMMENT '成绩编号',
	result_subject varchar(50) COMMENT '科目',
	result_score float COMMENT '分数',
	student_id int NOT NULL COMMENT '学生编号',
	PRIMARY KEY (result_id)
) COMMENT = '成绩表';


-- 学生表
CREATE TABLE tb_student
(
	student_id int NOT NULL AUTO_INCREMENT COMMENT '学生编号',
	student_name varchar(50) COMMENT '学生名',
	student_pwd varchar(50) COMMENT '密码',
	PRIMARY KEY (student_id)
) COMMENT = '学生表';


-- 学生身份信息表
CREATE TABLE tb_student_identifer
(
	student_id int NOT NULL COMMENT '学生编号',
	student_idcard varchar(30) COMMENT '身份证号码',
	student_number varchar(50) COMMENT '学号',
	PRIMARY KEY (student_id)
) COMMENT = '学生身份信息表';


-- 学生教师关系表
CREATE TABLE tb_student_teacher
(
	student_id int NOT NULL COMMENT '学生编号',
	teacher_id int NOT NULL COMMENT '教师编号'
) COMMENT = '学生教师关系表';


-- 教师表
CREATE TABLE tb_teacher
(
	teacher_id int NOT NULL AUTO_INCREMENT COMMENT '教师编号',
	teacher_name varchar(50) COMMENT '教师名字',
	teacher_pwd varchar(50) COMMENT '登录密码',
	PRIMARY KEY (teacher_id)
) COMMENT = '教师表';

根据数据库表,建立对应的POJO以及映射文件。

注意:多对多的关联表只做关联桥梁,不生成POJO对象。

--pojo:
public class Student {
    

    private Integer studentId; // 学生编号
    private String StudentName; // 姓名
    private String studentPwd; // 密码
    
    // get、set方法
}

——————————————————————————
public class StudentIdentifer {
    

    private Integer studentId;
    private String studentIdcard;
    private String studentNumber;

    // get、set方法
}

——————————————————————————
public class Teacher {
    

    private Integer teacherId;
    private String teacherName;
    private String teacherPwd;
    
    // get、set方法
}

——————————————————————————
public class Result {
    

    private Integer resultId;
    private String resultSubject;
    private Float resultScore;
    private Integer studentId;

    // get、set方法
}
xxx.hbm.xml:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值