hibernate单向N-1无表连接级联
2015-11-27 11:19
519 查看
今天做到hibernate关系映射单向N-1级联这里憋了一上午终于调通了一个例子有点收获。下边说一下流程
1、创建数据库
address表
person表
建立他们之间的外键关系(关于怎样设置关系查看;http://jingyan.baidu.com/album/5225f26b05a25de6fa0908ae.html?picindex=2)
2、在hibernate中建立他们的实体类
person的实体类
最后测试类
其中一定要注意cascade级联一定要设置为all不然就会报错。
1、创建数据库
address表
person表
建立他们之间的外键关系(关于怎样设置关系查看;http://jingyan.baidu.com/album/5225f26b05a25de6fa0908ae.html?picindex=2)
2、在hibernate中建立他们的实体类
person的实体类
package com.wxb.model; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; 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 { // Fields private Integer personId; private Integer age; private String name; private AddressInf addressInf; // Constructors /** default constructor */ public PersonInf() { } /** full constructor */ public PersonInf(AddressInf addressInf, Integer age, String name) { this.addressInf = addressInf; this.age = age; this.name = name; } // Property accessors @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "person_id", unique = true, nullable = false) public Integer getPersonId() { return this.personId; } public void setPersonId(Integer personId) { this.personId = personId; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "address_id", nullable = false) @Cascade(CascadeType.ALL) public AddressInf getAddressInf() { return this.addressInf; } public void setAddressInf(AddressInf addressInf) { this.addressInf = addressInf; } @Column(name = "age", nullable = false) public Integer getAge() { return this.age; } public void setAge(Integer age) { this.age = age; } @Column(name = "name", nullable = false) public String getName() { return this.name; } public void setName(String name) { this.name = name; } }address的实体类
package com.wxb.model; import java.util.HashSet; import java.util.Set; import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import static javax.persistence.GenerationType.IDENTITY; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; /** * PersonInf entity. * @author 王校兵 * @version 1.0, 2015-11-27 */ @Entity @Table(name = "address_inf") public class AddressInf implements java.io.Serializable { // Fields private Integer addressId; private String addressDetial; // Constructors /** default constructor */ public AddressInf() { } /** minimal constructor */ public AddressInf(String addressDetial) { this.addressDetial = addressDetial; } // Property accessors @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "address_id", unique = true, nullable = false) public Integer getAddressId() { return this.addressId; } public void setAddressId(Integer addressId) { this.addressId = addressId; } @Column(name = "addressDetial", nullable = false) public String getAddressDetial() { return this.addressDetial; } public void setAddressDetial(String addressDetial) { this.addressDetial = addressDetial; } }
最后测试类
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; /** * 测试级联dao类 * @author 王校兵 * @version 1.0, 2015-11-27 * * */ public class PersonCascadeDao { /** * 运行的主方法 * */ public static void main(String[] args) { Session session = HibernateSessionFactory.getSession(); Transaction ts = session.beginTransaction(); PersonInf p = new PersonInf(); AddressInf a = new AddressInf("asdf"); p.setName("123"); p.setAge(12); p.setAddressInf(a); session.persist(p); AddressInf a2 = new AddressInf("123"); p.setAddressInf(a2); ts.commit(); } }执行测试类就可以实现级联。
其中一定要注意cascade级联一定要设置为all不然就会报错。
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案
- Oracle 数据库自动存储管理-安装配置
- Oracle 数据库 临时数据的处理方法
- 数据库分页查询语句数据库查询
- 最近比较流行的数据库挂马
- Oracle 手动创建数据库步骤详解
- 分割超大Redis数据库例子