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类和配置文件的准备 这里有一点提前 ...
随机推荐
- java Clone使用方法详解
java"指针" Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文会试图澄清这一概念.并且由于Java不能 通过 ...
- 【maven】 pom.xml内容没有错,但一直报错红叉 解决办法
1.首先看一下下面的这两个项目,一个是新建的,一个是原来的老项目 2.myEcplise中是点击如下图 Maven4MyEcplise, Ecplise中也是右键,只不过点击Mavene而已,两个一样 ...
- wpf Popup Win8.0 bug HorizontalOffset 弹出位置偏移
问题描述参考 wpf 客户端[JDAgent桌面助手]开发详解(四) popup控件的win8.0的bug 当开发完程序后,我们在多操作系统测试时候发现:win8.0 系统中 popup 弹出的位置 ...
- 运用datalist标签实现用户的搜索列表
datalist是一个很强大的HTML5标签,支持一般类似于模糊查询,以前都是需要js来做的.下面是一个datalist配合js的小例子,主要是实现用户是否存在,以及添加过程中是否重复的判断. 首先是 ...
- 【原】iOS学习之卸载Openfire
在即时通信编程中,你的Openfire服务可能因为各种不同的原因,出现不能使用.无法连接等问题. 解决这类问题最直接和省时间的方式就是卸载后重装,本篇主要为大家介绍如何卸载Openfire. 首先,确 ...
- C++可能出错的小细节
1. for(list<Geometry_line>::iterator it = G.begin(); it != G.end();) { if(IsLineCrossed(*it, l ...
- 20145308刘昊阳 《Java程序设计》第1周学习总结
20145308刘昊阳 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 Java平台概论 1.1Java不只是语言 Java最早取名Oak,后改名Java Java三大平台J ...
- 【CF】148D Bag of mice
http://codeforces.com/problemset/problem/148/D 题意:w个白b个黑,公主和龙轮流取,公主先取,等概率取到一个.当龙取完后,会等概率跳出一只.(0<= ...
- linux修改系统编码
Windows的默认编码为GBK,Linux的默认编码为UTF-8.在Windows下编辑的中文,在Linux下显示为乱码.一种方法是在windows进行转码,比如使用ue工具在文件-->转换 ...
- Java_JDK动态代理学习笔记
昨天被问了个问题,问题的大意是这样的:为什么 Proxy.newProxyInstance(ClassLoader loader, Class<?>[] interfaces, Invoc ...