hibernate之关于使用连接表实现多对一关联映射
2015-06-04 10:03
417 查看
【Hibernate】之关于使用连接表实现多对一关联映射
在我们项目使用中採用中间表最多的一般就是多对一,或者是多对多,当然一对一使用中间表也是能够的,可是这样的几率通常少之又少!所以这里重点介绍多对一和一对多的採用中间表进行关联映射!
依旧採用Group和Person来描写叙述这个逻辑!
Annotations配置
XML配置
写这篇文章,我特意查询了一下网上的文章,发现大家都是採用XML配置的,所以我这里也写了Annotations配置,由于JPA中的Annotations使用起来远比XML要方便!OK?
XML配置
在我们项目使用中採用中间表最多的一般就是多对一,或者是多对多,当然一对一使用中间表也是能够的,可是这样的几率通常少之又少!所以这里重点介绍多对一和一对多的採用中间表进行关联映射!
依旧採用Group和Person来描写叙述这个逻辑!
Annotations配置
@Entity @Table(name="t_group") publicclass Group { private Integer id; private String name; @Id @GeneratedValue public Integer getId() { returnid; } publicvoid setId(Integer id) { this.id = id; } @Column(name="g_name") public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } }
@Entity @Table(name="p_person") publicclass Person { private Integer id; private String name; private Integer age; private Group group; @ManyToOne
//以下是配置中间表的核心 @JoinTable(name="g_p",joinColumns={@JoinColumn(name="p_id")}, inverseJoinColumns={@JoinColumn(name="g_id")}) public Group getGroup() { returngroup; } publicvoid setGroup(Group group) { this.group = group; } @Id @GeneratedValue public Integer getId() { returnid; } publicvoid setId(Integer id) { this.id = id; } @Column(name="p_name") public String getName() { returnname; } publicvoid setName(String name) { this.name = name; } @Column(name="p_age") public Integer getAge() { returnage; } publicvoid setAge(Integer age) { this.age = age; } }
XML配置
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="csg.hibernate.entity"> <class name="Person" table="t_person"> <id name="id"> <column name="id"/> <generator class="native" /> </id> <property name="name" /> <property name="age" /> <join table="t_p" optional="true"> <key column="p_id"></key> <many-to-one name="group" column="g_id" class="Group" unique="true"/> </join> </class> </hibernate-mapping>
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="csg.hibernate.entity"> <class name="Group" table="t_group"> <id name="id"> <column name="id"/> <generator class="native" /> </id> <property name="name" /> </class> </hibernate-mapping>
写这篇文章,我特意查询了一下网上的文章,发现大家都是採用XML配置的,所以我这里也写了Annotations配置,由于JPA中的Annotations使用起来远比XML要方便!OK?
XML配置
相关文章推荐
- iOS中为网站添加图标到主屏幕以及增加启动画面
- 2、vsphere6-AD安装及配置
- ios 怎样让textview里的文字从最顶开始显示?
- mysql表结构复制到新表(不存在)
- Android酷炫实用的开源框架(UI框架)
- Android---AlertDialog
- Unable to get package info for [包路径]; is package not installed
- sql学习笔记(17)----------MySQL命令
- android移植ffmpeg的编译
- 纪念
- 为什么深圳成指关注度远远小于上证指数?
- Effective C++ 条款41
- Mac上制作Linux U盘启动盘
- 大数据技术Hadoop面试题,看看你能答对多少?
- 安卓项目中的R.java文件丢失如何解决
- LeetCode Database 学习总结 - Section One
- HTML5 调用手机摄像头 Demo
- 字符串截取函数substr和substring的不同及其相关说明
- LeetCode:Remove Element
- CentOS Linux时出现GPT分区不能引导错误的解决办法