08-hibernate注解-多对多双向外键关联
多对多双向外键
双方持有对方的集合对象
其中一方设置:
//教师类
@ManyToMany(mappedBy="teachers") //mappedby表示教师交给学生来控制
另一方:
//学生类
@ManyToMany
@JoinTable(
name="teachars_students", //中间表的名字
joinColumns= {@JoinColumn(name="sid")}, //外键的字段
inverseJoinColumns= {@JoinColumn(name="tid")}) //反转控制字段的名字
相对于刚刚的多对多单向外键,多对多双向外键,只需要在教师类修改就行了。
教师类:
因为多对多,所以教师类中也需要有学生类的集合。
然后把教师交给学生来控制,由学生做主控方。
package mtm_bfk; import java.util.Set; import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany; import org.hibernate.annotations.GenericGenerator; //教室实体类
@Entity
public class Teachers { @Id
@GeneratedValue(generator="tid")
@GenericGenerator(name="tid",strategy="assigned")
@Column(length=4)
private String tid;//教师的编号
private String tname;//姓名
@ManyToMany(mappedBy="teachers")//把教师交给学生控制
private Set<Students> stus;//教师持有学生的集合 public Teachers()
{ }
public Teachers(String tid, String tname) {
//super();
this.tid = tid;
this.tname = tname;
} public Set<Students> getStus() {
return stus;
} public void setStus(Set<Students> stus) {
this.stus = stus;
} public String getTid() {
return tid;
} public void setTid(String tid) {
this.tid = tid;
} public String getTname() {
return tname;
} public void setTname(String tname) {
this.tname = tname;
} }
测试结果差不多。
08-hibernate注解-多对多双向外键关联的更多相关文章
- 08-hibernate注解-多对多单向外键关联
多对多单向外键 1,学生和教师构成多对多的关联关系 2,其中一个多方持有另一个多方的集合对象(学生持有教室的集合) 3,通过注解@JoinTable,创建中间表(作为多对多的载体,用来确定学生和教师的 ...
- 05-hibernate注解-多对一单向外键关联
多对一单向外键 1,多方持有一方的引用,比如:多个学生对应一个班级(多对一) 2,@ManyToOne(cascade={CascadeType.ALL}, fetch=FetchType.EAGE ...
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式 双向关联和单向关联的区别
首先还是来构造一个实际应用的场景,比如实体类车辆(Car),它具有以下属性:Id,品牌(brand),车牌(lisencePlate):实体类车牌(LisencePlate),它具有以下属性:Id,号 ...
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式
首先还是来构造一个实际应用的场景,比如实体类车辆(Car),它具有以下属性:Id,品牌(brand),车牌(lisencePlate):实体类车牌(LisencePlate),它具有以下属性:Id,号 ...
- hibernate annotation 之 一对多、多对一双向外键关联
假设,一个农场产出多种植物,具体的某一植物产于某一农场. 3 import java.io.Serializable; 4 import java.util.Set; 5 import javax.p ...
- hibernate 关系映射之 双向外键关联一对一
在上一篇博客内容的基础上做了以下修改,即可实现. 注解方式: package com.bjsxt.hibernate; import javax.persistence.Entity; imp ...
- Hibernate注解:一对多外键关联
情形:两个表,cms_mode是主表,cms_model_field是子表,cms_model_field的model_id字段关联到cms_model的主键. # # Source for tabl ...
- hibernate一对一双向外键关联
一对一双向外键关联:双方都持有对方的外键关联关系. 主控方和一对一单向外键关联的情况是一样的,主要的差异表现为,被空方需要添加: @OneToOne(mappedBy="card" ...
- hibernate---一对一双向外键关联 (重要)
husband--wife: one to one 双向外键关联: 主导方: @OneToOne @JoinColumn(name="wifeId") 被主导方: @OneToOn ...
随机推荐
- Xamarin Android项目提示SDK版本太老
Xamarin Android项目提示SDK版本太老 错误信息:The installed Android SDK is too old.Version 24.3.4 or newer is requ ...
- python的reduce()函数(转)
reduce()函数也是Python内置的一个高阶函数. reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接 ...
- 【MySQL笔记】数据库的查询
数据库的查询 注:文中 [ ...] 代表该部分可以去掉. 理论基础:对表对象的一组关系运算,即选择(selection).投影(projection)和连接(join) 1.select语句 子语句 ...
- [转]Spring MVC 事务配置
Spring MVC事务配置 要了解事务配置的所有方法,请看一下<Spring事务配置的5种方法> 本文介绍两种配置方法: <tx:advice/>就是告诉事务管理器:怎么做 ...
- sql server 博客:不胜人生一场醉
http://blog.csdn.net/baoqiangwang/article/category/604358
- php判断手机客户端
<?php // check if wap function check_wap(){ if(stristr($_SERVER['HTTP_VIA'],"wap")){// ...
- JS 的一些基础算法题
1.翻转字符串 例子(要求:先把字符串转化成数组,再借助数组的reverse方法翻转数组顺序,最后把数组转化成字符串) function reverseString(str) { str=str. ...
- 配置安全证书的Etcd集群
不知在哪篇技术文档中看到,kubernetes master和etcd分开部署模式,因为集群的状态都保存在etcd中,这样当kubernetes master挂掉后,通过API Server交互的Sc ...
- PostgreSQL配置文件--日志和错误
6 错误操作和日志 ERROR REPORTING AND LOGGING 6.1 日志写到哪里 Where to Log 6.1.1 log_destination 字符串 默认: log_dest ...
- [java] 简单的ConcurrentHashMap
ConcurrentMap和Guava的LocalCache实现原理相近,底层的存储方式使用的时table方式来存储.这里使用最简单且最暴力的方式,在每次访问的时候均加锁. ConcurrentHas ...