Hibernate在关于一对多,多对一双向关联映射
2015-09-24 17:28
393 查看
【Hibernate】之关于一对多,多对一双向关联映射
因为一对多。和多对一的双向关联映射基本上一样,所以这里就一起写下来!
Annotations配置
XML配置
由上大家都能够得出疑问?
为什么双向关联在Group中key须要指定column而在Person中也须要指定column呢?
假设当中一个不指定会有什么后果?
假设指定的column不一致又会有什么后果?
大家能够试一下!
因为一对多。和多对一的双向关联映射基本上一样,所以这里就一起写下来!
Annotations配置
@Entity @Table(name="t_group") publicclass Group { private Integer id; private String name; private Set<Person> persons=newHashSet<Person>();//set不同意反复,最适合数据库模型 @Id @GeneratedValue public Integer getId() { returnid; } publicvoid setId(Integerid) { this.id = id; } @Column(name="t_name") public String getName() { returnname; } publicvoid setName(Stringname) { this.name = name; } @OneToMany(mappedBy="group")//意识是告诉Hibernate的关联关系应该设在Person,多的一方 // 仅仅有OneToOne,OneToMany,ManyToMany上才有mappedBy属性,ManyToOne不存在该属性; public Set<Person>getPersons() { returnpersons; } publicvoidsetPersons(Set<Person> persons) { this.persons = persons; } }
@Entity @Table(name="t_person") publicclass Person { private Integer id; private String name; private Integer age; private Group group; @ManyToOne public Group getGroup() { returngroup; } publicvoid setGroup(Groupgroup) { this.group = group; } @Id @GeneratedValue public Integer getId() { returnid; } publicvoid setId(Integerid) { this.id = id; } @Column(name="p_name") public String getName() { returnname; } publicvoid setName(Stringname) { this.name = name; } @Column(name="p_age") public Integer getAge() { returnage; } publicvoid setAge(Integerage) { this.age = age; } }
XML配置
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping 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" /> <set name="persons"> <key column="groupId"/> <one-to-many class="csg.hibernate.entity.Person"/> </set> </class> </hibernate-mapping>
<?xml version="1.0"? > <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping 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" /> <many-to-one name="group" column="groupId"/> </class> </hibernate-mapping>
由上大家都能够得出疑问?
为什么双向关联在Group中key须要指定column而在Person中也须要指定column呢?
假设当中一个不指定会有什么后果?
假设指定的column不一致又会有什么后果?
大家能够试一下!
相关文章推荐
- php Hash Table(三) Hash Table初始化
- Python操作PDF与Tiff文件
- HTML5表单及其验证【html自带属性验证】
- 同步异步 阻塞非阻塞 事件
- ForkJoinPool
- sysinfo
- celery最佳实践
- 【LeetCode】Move Zeroes
- 工作日两个日期之间的数
- 一个安全测试的CheckList
- innodb 优化
- 【转】SQLServer XML类型
- [Leetcode]Generate Parentheses
- android 获取网络图片
- LVS集群的基本原理、LVS/NAT模式的配置、LVS/DR模式的配置、编写自动脚本检查LVS上realserver健康性
- openstack 安装踏过的坑
- iOS 9系统策略更新,使用微信SDK的开发者注意升级
- .net 制作二维码
- CocoStudio基础教程(4)骨骼动画的动态换肤
- Java序列化与反序列化的几种方式