springmvc4+hibernate4+spring4注解一对多级联保存
package com.h3c.zgc.user.entity; import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table; import org.hibernate.annotations.Cascade; import org.hibernate.annotations.CascadeType; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="t_person",catalog="itac") public class Person { @Id @GenericGenerator(name="generator",strategy="increment") @GeneratedValue(generator="generator") @Column(name="person_id",unique=true,nullable=false) private Integer personId; @Column(name="person_name") private String personName; @OneToMany(targetEntity=House.class) @JoinColumn(name="person_id",updatable =false) @Cascade(CascadeType.SAVE_UPDATE) private Set<House> houses = new HashSet<House>(); public Set<House> getHouses() { return houses; } public void setHouses(Set<House> houses) { this.houses = houses; } public Integer getPersonId() { return personId; } public void setPersonId(Integer personId) { this.personId = personId; } public String getPersonName() { return personName; } public void setPersonName(String personName) { this.personName = personName; } @Override public String toString() { return "Person [personId=" + personId + ", personName=" + personName + ", houses=" + houses + "]"; } }
package com.h3c.zgc.user.entity; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; 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; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="t_house",catalog="itac") public class House { @Id @GeneratedValue(generator="generator") @GenericGenerator(name="generator",strategy="increment") @Column(name="house_id",unique=true,nullable=false) private Integer houserId; @Column(name="house_address") private String houseAddress; @ManyToOne(targetEntity=Person.class) @JoinColumn(name="person_id",updatable=false) @Cascade(CascadeType.SAVE_UPDATE) private Person person; public Person getPerson() { return person; } public void setPerson(Person person) { this.person = person; } public Integer getHouserId() { return houserId; } public void setHouserId(Integer houserId) { this.houserId = houserId; } public String getHouseAddress() { return houseAddress; } public void setHouseAddress(String houseAddress) { this.houseAddress = houseAddress; } @Override public String toString() { return "House [houserId=" + houserId + ", houseAddress=" + houseAddress + "]"; } }
dao
package com.h3c.zgc.user.dao; import java.util.HashSet; import java.util.Set; import javax.annotation.Resource; import org.hibernate.SessionFactory; import org.springframework.orm.hibernate4.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; import com.h3c.zgc.user.entity.House; import com.h3c.zgc.user.entity.Person; @Repository public class PersonDao extends HibernateDaoSupport{ @Resource private void set(SessionFactory sessionFactory){ this.setSessionFactory(sessionFactory); } public void savePerson(){ Person p = new Person(); p.setPersonName("person01"); this.getHibernateTemplate().save(p); } public void savePersonAndHouse(){ Person p = new Person(); p.setPersonName("person01"); House h = new House(); h.setHouseAddress("beijing"); Set<House> hs = new HashSet<House>(); hs.add(h); //建立关系 p.setHouses(hs); h.setPerson(p); this.getHibernateTemplate().save(p); System.out.println(p); } }
service
package com.h3c.zgc.user.service; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.h3c.zgc.user.dao.PersonDao; @Service public class PersonService { @Resource private PersonDao personDao; @Transactional public void savePerson() { this.personDao.savePerson(); } @Transactional public void savePersonAndHouse() { this.personDao.savePersonAndHouse(); } }
controller
package com.h3c.zgc.user.controller; import java.io.IOException; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.h3c.zgc.user.service.PersonService; @Controller public class PersonController { @Resource private PersonService personService; @RequestMapping("savePerson") public String savePerson(HttpServletRequest request){ this.personService.savePerson(); request.setAttribute("flag", "success"); return "h4/flag"; } @RequestMapping("savePersonHouse") public String savePersonHouse(HttpServletRequest request){ this.personService.savePersonAndHouse(); request.setAttribute("flag", "success"); return "h4/flag"; } @RequestMapping("test0") public void test(HttpServletResponse response) throws IOException{ String strs = "[{ title: '中国好声音'},{ title: '中国饮料'},{ title: '中国好舞蹈'}]"; response.getWriter().write(strs); } }
访问路径
http://localhost:8080/zgc/savePersonHouse
springmvc4+hibernate4+spring4注解一对多级联保存的更多相关文章
- hibernate 一对多 级联 保存修改 删除
一对多,一端设置: <set name="TWorkorderHistories" inverse="true" cascade="all&qu ...
- 【JPA 级联保存/级联删除】@OneToMany (双向) 一对多【转】
[http://blog.sina.com.cn/s/blog_625d79410101dbdd.html] 看过前两篇帮助文档 [JPA] @OneToOne 单向 和 [JPA]@OneToO ...
- Hibernate中表与表之间的关联一对多,级联保存和级联删除
1:Hibernate的一对多操作(重点) 一对多映射配置 第一步:创建两个实体类:客户和联系人(例)以客户为一,联系人为多: package com.yinfu.entity; public cla ...
- 【j2ee spring】30、巴巴荆楚网-综合hibernate4+spring4(5)分页
巴巴荆楚网-综合hibernate4+spring4(5)分页 1.图文项目 2.首先我们引入对应的jar包 3.我们配置一下数据库中对应的实体对象 ProductType.java /** * 功能 ...
- 再谈Hibernate级联删除——JPA下的Hibernate实现一对多级联删除CascadeType.DELETE_ORPHAN
声明: 1.本文系原创,非抄袭或转载过来的. 2.本文论点都亲手做过实验论证. 3.本文所讲的Hibernate配置都基于注解的方式,hbm语法未提供. 非常多人对持久层概念搞不清JPA.Hibern ...
- 【j2ee spring】27、巴巴荆楚网-整合hibernate4+spring4(2)
巴巴荆楚网-整合hibernate4+spring4(2) 1.图文项目 2.首先我们引入对应的jar包 这里用的是oracle 11g,所以我们使用的数据库连接jar包是ojdbc6, 的区别就是支 ...
- Hibernate学习(三)一对多数据的保存
保存习惯代码 @Test public void saveTwoTableTest(){ Transaction transaction = null; try { transaction = ses ...
- Hibernate入门(八)级联保存或更新(含问题在末尾,求大佬指点..)
级联保存或更新CASCADE 级联保存或更新: 作用就是:保存一方的数据的时候,会把关联的对象也同时保存. 级联保存或更新的配置: 属性名:cascade 属性值: 1.none:所有情况下均不进行关 ...
- Hibernate一对多关联关系保存时的探究
在以前使用hibernate时,经常对保存存在关联关系的对象时,不确定是否能保存成功. 因此,特意对一对多关系的2个对象进行实践. 一.pojo类和配置文件的准备 这里有一点提前 ...
随机推荐
- ASP.Net MVC开发基础学习笔记(4):校验、AJAX与过滤器
一.校验 — 表单不是你想提想提就能提 1.1 DataAnnotations(数据注解) 位于 System.ComponentModel.DataAnnotations 命名空间中的特性指定对数据 ...
- 【JavaScript】变量定义提升、this指针指向、运算符优先级、原型、继承、全局变量污染、对象属性及原型属性优先级
参考资料http://caibaojian.com/toutiao/5446 1.所有变量声明(var)或者声明函数都会被提升到当前函数顶部 关于函数表达式,js会将代码拆分为两行代码分别执行.这里需 ...
- 2016.8.14 HTML5重要标签及其属性学习
1.移动端的CSS: 一般需要引入下面的外部样式表: <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/ ...
- FastMM配置文件详解
FastMM最新版本提供了中文语言包,可方便国内使用.下载地址为 http://sourceforge.net/projects/fastmm/ 配置文件为:FastMM4Options.inc, 中 ...
- Graphics 导出图片使用【这个主要是画图类图的使用,记录一下】
/// <summary> /// 导出信令流程矢量图 /// </summary> /// <param name="signalFlowInfos" ...
- JavaScript中的apply()方法和call()方法使用介绍
1.每个函数都包含两个非继承而来的方法:apply()和call(). 2.他们的用途相同,都是在特定的作用域中调用函数. 3.接收参数方面不同,apply()接收两个参数,一个是函数运行的作用域(t ...
- Linux下使用vsftp
参考网址: http://wenku.baidu.com/view/4339434bc850ad02de80419c.html?re=view root用户无法ftp登录,显示530 Permissi ...
- 【BZOJ3531】[Sdoi2014]旅行 树链剖分+动态开点线段树
[BZOJ3531][Sdoi2014]旅行 Description S国有N个城市,编号从1到N.城市间用N-1条双向道路连接,满足从一个城市出发可以到达其它所有城市.每个城市信仰不同的宗教,如飞天 ...
- 在Spring-Mybatis-Restful中配置多数据源的properties文件
在Spring的配置文件中,如下: <?xml version="1.0" encoding="utf-8"?> <beans xmlns=& ...
- XCOJ 1103 (LCA+树链最大子段和)
题目链接: http://xcacm.hfut.edu.cn/problem.php?id=1103 题目大意:链更新.链查询,求树链的最大子段和.(子段可以为空) 解题思路: 将所有Query离线存 ...