学习hibernate_01_细说onetomany manytoone注解
2017-01-23 23:52
357 查看
onetomany,一对多,用一的一方维护多的一方;manytoone,多对一,用多的一方维护多的一方。
采用MySql数据库,用字典类型和数据字典做为示例。
Navicat表设计截图
![](https://img-blog.csdn.net/20170123233941211?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvb25lemc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
![](https://img-blog.csdn.net/20170123233954431?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvb25lemc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
注意点:
(1)one表只需设置主键
(2)many表需要定义一个关联one表的字段,字段类型两者要一致
(3)@ManyToOne使用JoinColumn,设置成many表的关联字段
(4)@OneToMany的mappedBy,设置成另一方manytoone所在的参数
(5)只有@ManyToOne没有@OneToMany,是可以的
采用MySql数据库,用字典类型和数据字典做为示例。
1. 数据库表
CREATE TABLE `sys_dictionary_type` ( `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '类型标识', `NAME` varchar(100) CHARACTER SET utf8 NOT NULL COMMENT '类型名称', PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; INSERT INTO `sys_dictionary_type` VALUES ('1', '编码类型'); INSERT INTO `sys_dictionary_type` VALUES ('2', '联系方式'); ===================================================================== CREATE TABLE `sys_dictionary` ( `ID` int(11) NOT NULL AUTO_INCREMENT COMMENT '字典标识', `NAME` varchar(100) CHARACTER SET utf8 NOT NULL COMMENT '字典名称', `TYPEID` int(11) NOT NULL COMMENT '字典类型ID', PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; INSERT INTO `sys_dictionary` VALUES ('1', 'UTF8', '1'); INSERT INTO `sys_dictionary` VALUES ('2', 'GBK', '1'); INSERT INTO `sys_dictionary` VALUES ('3', 'big5', '1'); INSERT INTO `sys_dictionary` VALUES ('4', '手机', '2'); INSERT INTO `sys_dictionary` VALUES ('5', 'QQ', '2');
Navicat表设计截图
2. JavaBean
import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; @Entity @Table(name = "SYS_DICTIONARY_TYPE") public class DicTypeDomain implements java.io.Serializable { private static final long serialVersionUID = -4695667192670895776L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID", unique = true, nullable = false) private Integer id; @Column(name = "NAME") private String name; //dictype是什么?就是另一方,manytoone所在的参数是哪个就写成那个。 @OneToMany(mappedBy = "dictype") private Set<DicDomain> dics; //省略getters and setters }
import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @Entity @Table(name = "SYS_DICTIONARY") public class DicDomain { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID", unique = true, nullable = false) private Integer id; @Column(name = "NAME") private String name; @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "typeid", updatable = false, insertable = false) private DicTypeDomain dictype; //省略getters and setters }
注意点:
(1)one表只需设置主键
(2)many表需要定义一个关联one表的字段,字段类型两者要一致
(3)@ManyToOne使用JoinColumn,设置成many表的关联字段
(4)@OneToMany的mappedBy,设置成另一方manytoone所在的参数
(5)只有@ManyToOne没有@OneToMany,是可以的
相关文章推荐
- Hibernate学习文档_01_Base knowledge
- Hibernate3 - HelloWorld(hibernate-mapping和Annotation) 【从零开始学习Hibernate_01】
- 【Hibernate学习笔记-5】@Formula注解的使用
- Hibernate学习(五) 注解映射
- 【Java EE 学习 50】【Spring学习第二天】【使用注解的DI实现】【spring中的继承】【动态代理伪hibernate实现】
- spring2.5 基于注解依赖注入学习--01
- 码农小汪-Hibernate学习8-hibernate关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable
- 【Hibernate学习】 —— 抓取策略(注解方式)
- 01-hibernate jpa 注解 @Temporal(TemporalType.DATE) 日期注解
- Hibernate学习篇01——Hibernate基础
- Hibernate学习笔记_01_第一个Hibernate小程序
- Hibernate学习01---Hibernate环境搭建
- Hibernate注解方式学习案例
- Rhythmk 学习 Hibernate 07 - Hibernate annotation 实体注解
- Hibernate学习笔记 3 - 关系映射配置(基于注解)
- Hibernate3.32学习笔记_01
- 使用注解风格学习Hibernate和JPA的主键生成策略
- Spring学习(六)spring整合注解形式的hibernate
- Hibernate4学习总结(4)--注解形式的集合映射,关联关系映射