博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate双向多对多关联
阅读量:5055 次
发布时间:2019-06-12

本文共 2083 字,大约阅读时间需要 6 分钟。

一、配置双向多对多关联

以Project类(项目)和Emp类(员工)为例:

1、创建Project类,并需要定义集合类型的Emp属性

public class Project {    //编号     private Integer pid;     //名称     private String pname;     //定义集合类型的Emp属性     private Set
emps=new HashSet
(); public Integer getPid() { return pid; } public void setPid(Integer pid) { this.pid = pid; } public String getPname() { return pname; } public void setPname(String pname) { this.pname = pname; } public Set
getEmps() { return emps; } public void setEmps(Set
emps) { this.emps = emps; }

2、同理 创建Emp类,并需要定义集合类型的Project属性

public class Emp {    private  String empname;    private  Integer nid;    private Set
pros=new HashSet
(); public String getEmpname() { return empname; } public void setEmpname(String empname) { this.empname = empname; } public Integer getNid() { return nid; } public void setNid(Integer nid) { this.nid = nid; } public Set
getPros() { return pros; } public void setPros(Set
pros) { this.pros = pros; } }

3、需建立第三张表 关联Project和Emp各自的主键pid、nid

 

4、编写Project.hbm.xml和Emp.hbm.xml小配置,并植入<set>元素中的table属性 第三张表ProEmp 以及多对多<many-to-many>标签 class指定类型 

Emp.hbm.xml关键代码如下:

Project.hbm.xml关键代码如下:

5、大配置hibernate.cfg.xml 需关联小配置

6、测试类 Test

/*     * 多对多 双向     */        @Test    public void addTest(){                //创建员工对象             Emp emp=new Emp();             emp.setEmpname("未知");             //创建工程对象             Project pro=new Project();             pro.setPname("花园");                          //将员工对象添加到工程  反之 同理             pro.getEmps().add(emp);             emp.getPros().add(pro);                          //保存             session.save(pro);             session.save(emp);                                        }

注:对于双向多对多关联,需要将其中一端inverse属性设为True,否则违反约束条件

转载于:https://www.cnblogs.com/jingpeipei/p/5833980.html

你可能感兴趣的文章
sqlserver convert 日期时间 转换格式化
查看>>
摆脱DOM操作,从TodoMVC看angularJS
查看>>
[usaco2009nov]奶牛的图片
查看>>
FFT理解
查看>>
App弱网测试方式
查看>>
PHP zendstudio framework2配置过程
查看>>
Xor Sum 01字典树 hdu4825
查看>>
数据访问:三大范式
查看>>
ok6410 android driver(10)
查看>>
kubuntu设置
查看>>
Python基础-----random随机模块(验证码)
查看>>
手机端fixed底部跟着窗口动问题
查看>>
树专题(伸展树 / 树链剖分 / 动态树 学习笔记)
查看>>
HTML图像、超链接标签
查看>>
[国嵌攻略][164][USB驱动程序设计]
查看>>
C# 实现Bresenham算法(vs2010)
查看>>
基于iSCSI的SQL Server 2012群集测试(一)--SQL群集安装
查看>>
list 容器 排序函数.xml
查看>>
存储开头结尾使用begin tran,rollback tran作用?
查看>>
Activity启动过程中获取组件宽高的五种方式
查看>>