欢迎来到天天文库
浏览记录
ID:34041779
大小:49.50 KB
页数:5页
时间:2019-03-03
《hibernate一对多、一对一、多对多映射之annotation篇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Annotation注解可以放在属性所在行的上方,也可放在对应的属性的get方法的上方一、一对多/多对一1.确定谁是一方,谁是多方。2.po代码一方po有set<多方类型>的属性,部分关键代码Department:@Id@SequenceGenerator(name="seqDept",sequenceName="seq_t_department")@GeneratedValue(generator="seqDept")@Column(name="dept_id")privateIntegerdeptId;/***2、anyclass>*///mappedBy必须写:值是对方中本方类型的属性名inverse:放弃//维护外键不让系统自动生成中间表//,fetch=FetchType.EAGER不懒加载FetchType.LAZY懒加载@OneToMany(mappedBy="department")privateSetempSet;多方po有一方类型的属性,部分关键代码Employee:@Id@SequenceGenerator(name="seqEmp",sequenceName="seq_t_employee")@GeneratedValue(generato3、r="seqEmp")@Column(name="emp_Id")privateIntegerempId;/****/////,cascade=CascadeType.ALL@ManyToOne@JoinColumn(name="dept_id")privateDepartmentdepartment;二、一对一1外键关联:一对多的基础上在外键字段上加个唯一约束构成1对1的关系。1.1确定谁是一方,谁是多方。因为是一对一的关系,所以任何一方是一方或多方都可以2.1po双方各有一个对方类型的属性,部分代码一方Address:@4、Id@SequenceGenerator(name="seqAddr",sequenceName="seq_t_address")@GeneratedValue(generator="seqAddr")@Column(name="dept_id")privateIntegeraddrId;@OneToOne(mappedBy="address")privateCompanycompany;多方Company:@Id@SequenceGenerator(name="seqCompany",sequenceName="seq_t_company")@GeneratedValue(gen5、erator="seqCompany")@Column(name="company_id")privateIntegercompanyId;@ManyToOne@JoinColumn(name="addr_id",unique=true)privateAddressaddress;2.主键关联:双方一对一关系的数据保证主键值一致即可2.1都是一方2.2po:双方各有一个对方类型的属性,并且生成的两个表主键值相同Po中部分代码:下边是注解书写的另外一种形式Male:privateIntegermarriageId;privateIntegermaleId;privateFemalef6、emale;@Id@SequenceGenerator(name="seqMale",sequenceName="seq_t_male")@GeneratedValue(generator="seqMale")@Column(name="marriage_Id")publicIntegergetMarriageId(){returnmarriageId;}@OneToOne(cascade=CascadeType.ALL)@PrimaryKeyJoinColumnpublicFemalegetFemale(){returnfemale;}Female:privateIntegerm7、arriageId;privateIntegerfemaleId;privateMalemale;/***male*/@Id@GenericGenerator(name="seqFemale",strategy="foreign",parameters={@Parameter(name="property",value=
2、anyclass>*///mappedBy必须写:值是对方中本方类型的属性名inverse:放弃//维护外键不让系统自动生成中间表//,fetch=FetchType.EAGER不懒加载FetchType.LAZY懒加载@OneToMany(mappedBy="department")privateSetempSet;多方po有一方类型的属性,部分关键代码Employee:@Id@SequenceGenerator(name="seqEmp",sequenceName="seq_t_employee")@GeneratedValue(generato
3、r="seqEmp")@Column(name="emp_Id")privateIntegerempId;/****/////,cascade=CascadeType.ALL@ManyToOne@JoinColumn(name="dept_id")privateDepartmentdepartment;二、一对一1外键关联:一对多的基础上在外键字段上加个唯一约束构成1对1的关系。1.1确定谁是一方,谁是多方。因为是一对一的关系,所以任何一方是一方或多方都可以2.1po双方各有一个对方类型的属性,部分代码一方Address:@
4、Id@SequenceGenerator(name="seqAddr",sequenceName="seq_t_address")@GeneratedValue(generator="seqAddr")@Column(name="dept_id")privateIntegeraddrId;@OneToOne(mappedBy="address")privateCompanycompany;多方Company:@Id@SequenceGenerator(name="seqCompany",sequenceName="seq_t_company")@GeneratedValue(gen
5、erator="seqCompany")@Column(name="company_id")privateIntegercompanyId;@ManyToOne@JoinColumn(name="addr_id",unique=true)privateAddressaddress;2.主键关联:双方一对一关系的数据保证主键值一致即可2.1都是一方2.2po:双方各有一个对方类型的属性,并且生成的两个表主键值相同Po中部分代码:下边是注解书写的另外一种形式Male:privateIntegermarriageId;privateIntegermaleId;privateFemalef
6、emale;@Id@SequenceGenerator(name="seqMale",sequenceName="seq_t_male")@GeneratedValue(generator="seqMale")@Column(name="marriage_Id")publicIntegergetMarriageId(){returnmarriageId;}@OneToOne(cascade=CascadeType.ALL)@PrimaryKeyJoinColumnpublicFemalegetFemale(){returnfemale;}Female:privateIntegerm
7、arriageId;privateIntegerfemaleId;privateMalemale;/***male*/@Id@GenericGenerator(name="seqFemale",strategy="foreign",parameters={@Parameter(name="property",value=
此文档下载收益归作者所有