hibernate单向无连接表1—N关系映射
来源:互联网 发布:windows设置定时任务 编辑:程序博客网 时间:2024/06/02 07:28
1、首先创建数据库本示例采用sql sever 2008 r2数据库进行测试
创建address表
创建person表
2、在myeclipse中通过hibernate反向工程生成对应的实体类并做修改为如下
创建address的实体类
package com.wxb.model;import java.util.HashSet;import java.util.Set;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.JoinColumn;import javax.persistence.OneToOne;import static javax.persistence.GenerationType.IDENTITY;import javax.persistence.Id;import javax.persistence.OneToMany;import javax.persistence.Table;import org.hibernate.annotations.Cascade;import org.hibernate.annotations.CascadeType;/** * PersonInf entity. * * @author 王校兵 * @version 1.0, 2015-11-27 */@Entity@Table(name = "address_inf")public class AddressInf implements java.io.Serializable {// Fieldsprivate Integer addressId;private String addressDetial;private Set<PersonInf> personInf = new HashSet<PersonInf>();/** default constructor */public AddressInf() {}/** minimal constructor */public AddressInf(String addressDetial) {this.addressDetial = addressDetial;}@Id@GeneratedValue(strategy = IDENTITY)@Column(name = "address_id")public Integer getAddressId() {return this.addressId;}@Column(name = "addressDetial", nullable = false)public String getAddressDetial() {return this.addressDetial;}@OneToMany@JoinColumn(name = "address_id")public Set<PersonInf> getPersonInf() {return personInf;}public void setAddressDetial(String addressDetial) {this.addressDetial = addressDetial;}public void setAddressId(Integer addressId) {this.addressId = addressId;}public void setPersonInf(Set<PersonInf> personInf) {this.personInf = personInf;}}创建person的实体类
package com.wxb.model;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.OneToOne;import static javax.persistence.GenerationType.IDENTITY;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;import org.hibernate.annotations.Cascade;import org.hibernate.annotations.CascadeType;/** * PersonInf entity. * * @author 王校兵 * @version 1.0, 2015-11-27 */@Entity@Table(name = "person_inf")public class PersonInf implements java.io.Serializable {private Integer personId;private Integer age;private String name;private Integer addressId;@Column(name = "address_id")public Integer getAddressId() {return addressId;}public Integer getAge() {return this.age;}public String getName() {return this.name;}@Id@GeneratedValue(strategy = IDENTITY)@Column(name = "person_id")public Integer getPersonId() {return this.personId;}public void setAddressId(Integer addressId) {this.addressId = addressId;}public void setAge(Integer age) {this.age = age;}public void setName(String name) {this.name = name;}public void setPersonId(Integer personId) {this.personId = personId;}}
3、创建对应的测试类
测试向数据库中插入数据
package com.wxb.dao;import org.hibernate.Session;import org.hibernate.Transaction;import com.wxb.model.AddressInf;import com.wxb.model.PersonInf;import com.wxb.util.HibernateSessionFactory;/** * 单向一对多关系映射测试类<span style="font-family: Arial; font-size: 14px; line-height: 26px; white-space: pre;">测试向数据库中插入数据</span> * @author 王校兵 * @version 1.0, 2015-11-28 * */public class SingleOneToNDao {public static void main(String[] args) {Session session = HibernateSessionFactory.getSession();Transaction ts = session.beginTransaction();PersonInf p = new PersonInf();p.setName("crazyit.org");p.setAge(21);PersonInf p1 = new PersonInf();p1.setName("crazy234it.org");p1.setAge(23234);PersonInf p11 = new PersonInf();p11.setName("sd.org");p11.setAge(2);AddressInf a = (AddressInf) session.get(AddressInf.class, 40); p.setAddressId(a.getAddressId());p1.setAddressId(a.getAddressId());p11.setAddressId(a.getAddressId());session.save(p);session.save(p1);session.save(p11);ts.commit();}}测试读取数据库中的数据
package com.wxb.dao;import org.hibernate.Session;import org.hibernate.Transaction;import com.wxb.model.AddressInf;import com.wxb.model.PersonInf;import com.wxb.util.HibernateSessionFactory;/** * 单向一对多关系映射测试类,测试读取数据 * @author 王校兵 * @version 1.0, 2015-11-28 * */public class SingleOneToOneReadDao {public static void main(String[] args) {Session session = HibernateSessionFactory.getSession();Transaction ts = session.beginTransaction();AddressInf a = (AddressInf)session.get(AddressInf.class, 40);System.out.println("a.getAddressDetial()----- " + a.getAddressDetial());//System.out.println(a.getPersonInf().getClass());System.out.println(a.getPersonInf().size());for(PersonInf s:a.getPersonInf()){PersonInf p = (PersonInf)s;System.out.println(p.getName());}}}
0 0
- hibernate单向无连接表1—N关系映射
- Hibernate关系映射——单向N-1关系映射
- Hibernate-映射关系- n->1(单向)
- hibernate单向N-1无表连接级联
- hibernate单向N-N关系映射
- Hibernate学习随笔-----关系映射(1)单向N-1关联
- Hibernate关系映射1:单向N-1关联
- Hibernate学习随笔-----关系映射(3)单向1-N关联
- Hibernate关系映射——单向1-1关系映射
- Hibernate学习随笔-----关系映射(4)单向N-N关联
- Hibernate单向无连接表N-1关联的简单示例
- 2.Hibernate单向无链接表映射
- Hibernate关联关系映射-----基于连接表的单向一对多映射配置
- Hibernate关联关系映射-----基于连接表的单向一对多映射
- Hibernate关联关系映射-----基于连接表的单向一对一映射
- Hibernate关联关系映射-----基于连接表的单向多对多映射配置
- Hibernate 关系映射 ——单向一对一
- 【hibernate】关联映射那些事(二)--单向1-N映射和单向N-N映射
- table(集合对象)
- case语句(未找到Case)
- structs2-json应用
- 一个小小的面向对象的字符串游戏(刚学会)
- gvim不识别.vim插件编码
- hibernate单向无连接表1—N关系映射
- NScomparator
- 神之门V8(2):GC的混乱之治(上)
- 最小生成树(qsort+并查集+克鲁斯卡尔(Kruskal)算法)
- Unity 3D主要特性和缺陷
- ZT--Android* System-Level Java*/C++ Code Debugging
- [ecshop ectouch调试] ectouch 调试 68ecshop ecmoban 等网站的代码 的调试
- ecshop 后台 空白的调试
- Unity3d 引擎原理详细介绍