- 浏览: 63867 次
文章分类
最新评论
-
小灯笼:
ZooKeeper分布式专题与Dubbo微服务入门网盘地址:h ...
dubbo+zookeeper构建高可用分布式集群 -
qingfengxiu1985:
有没有全部工程代码?发一个呗,邮箱:qingfengxiu19 ...
mongodb+spring +morphia完整版框架搭建
首页说级联操作的基本配置:
在实体中定义操作关联的对象
实体:
配置文件:
Part.hbm.xml:
Img.hbm.xml:
写代码的时候,在Controller中使用关联表的数据是否报no session错误。百度一下是因为在applicationContext.xml 中用来延迟加载
在控制器调用的时候就会报no session 错误。因为session 在hibernate执行之后会自动关闭。所以找不到
解决方案:在web.xml 配置一个过滤器。是hibernate自带的一个session延迟关闭过滤。注意的是在hibernate3和hibernate4配置的不一样。当然还有一种就是把延迟加载关闭,但是这样数据大了之后,造成服务器运行效率级低。
在实体中定义操作关联的对象
实体:
package com.tosit.ligc.entity; import java.util.Date; import java.util.Set; public class Part { private Integer part_id; private Integer par_Part_id; private String part_name; private String part_content; private Date part_time; private String part_img; private Set<Part> part; private Set<Img> img; public Set<Part> getPart() { return part; } public void setPart(Set<Part> part) { this.part = part; } private Set<News> newsset; public Set<Img> getImg() { return img; } public void setImg(Set<Img> img) { this.img = img; } public Set<News> getNewsset() { return newsset; } public void setNewsset(Set<News> newsset) { this.newsset = newsset; } public Integer getPart_id() { return part_id; } public Part() { super(); } public void setPart_id(Integer part_id) { this.part_id = part_id; } public String getPart_name() { return part_name; } public void setPart_name(String part_name) { this.part_name = part_name; } public String getPart_content() { return part_content; } public void setPart_content(String part_content) { this.part_content = part_content; } public Date getPart_time() { return part_time; } public void setPart_time(Date part_time) { this.part_time = part_time; } public Integer getPar_Part_id() { return par_Part_id; } public void setPar_Part_id(Integer par_Part_id) { this.par_Part_id = par_Part_id; } public String getPart_img() { return part_img; } public void setPart_img(String part_img) { this.part_img = part_img; } }
package com.tosit.ligc.entity; public class Img { private Integer img_id; private String img_url; private String img_title; private Integer news_id; private Integer foods_id; private Integer stay_id; private Part part; public Part getPart() { return part; } public void setPart(Part part) { this.part = part; } public Integer getImg_id() { return img_id; } public void setImg_id(Integer img_id) { this.img_id = img_id; } public String getImg_url() { return img_url; } public void setImg_url(String img_url) { this.img_url = img_url; } public String getImg_title() { return img_title; } public void setImg_title(String img_title) { this.img_title = img_title; } public Integer getNews_id() { return news_id; } public void setNews_id(Integer news_id) { this.news_id = news_id; } public Integer getFoods_id() { return foods_id; } public void setFoods_id(Integer foods_id) { this.foods_id = foods_id; } public Integer getStay_id() { return stay_id; } public void setStay_id(Integer stay_id) { this.stay_id = stay_id; } }
配置文件:
Part.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- package 实体所在的包名 --> <hibernate-mapping package="com.tosit.ligc.entity"> <class name="Part" table="part"> <id name="part_id"> <generator class="increment"></generator> </id> <property name="part_name"></property> <property name="part_content"></property> <property name="part_time" ></property> <!-- 级联操作 --> <!-- 延迟加载 --> <many-to-one name="par_Part_id" class="Part" column="par_Part_id" lazy="proxy" not-null="true" > </many-to-one> <set name="part" table="part" cascade="all" inverse="true"> <!--cascade: 它用于指定如何操纵与当前对象关联的其他对象 all表示所有,还有save-update persist,merge,delete等等 Inverse:负责控制关系,默认为false,也就是关系的两端都能控制,如果为ture表示把 关系交给对方控制,一般情况为true not-null表示保存时候不能为空 --> <key column="par_Part_id" not-null="true"></key> <one-to-many class="Part" /> </set> <set name="img" table="img" cascade="all" inverse="true"> <key column="part_id"></key> <one-to-many class="Img"/> </set> </class> </hibernate-mapping>
Img.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.tosit.ligc.entity"> <class name="Img" table="img"> <id name="img_id"> <generator class="native"></generator> </id> <property name="img_url"></property> <property name="img_title"></property> <property name="news_id"></property> <property name="foods_id"></property> <property name="stay_id"></property> <many-to-one name="part" class="Part" column="part_id" lazy="proxy" not-null="true"/> </class> </hibernate-mapping>
写代码的时候,在Controller中使用关联表的数据是否报no session错误。百度一下是因为在applicationContext.xml 中用来延迟加载
default-lazy-init="true" default-autowire="byName"><!-- 是否延迟加载。通过名字实现自动装配 -->
在控制器调用的时候就会报no session 错误。因为session 在hibernate执行之后会自动关闭。所以找不到
package com.tosit.ligc.web; import java.util.HashSet; import java.util.List; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.jdbc.core.metadata.HanaCallMetaDataProvider; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import com.tosit.ligc.entity.News; import com.tosit.ligc.entity.Part; import com.tosit.ligc.service.PartService; @Controller public class PartController { @Autowired @Qualifier("partService") private PartService partService; /** 获取一级栏目信息 */ @RequestMapping("/index") public String index(ModelMap map){ List<Part> partlist = partService.getPartlist(); map.put("partlist", partlist); return "index"; } /** * 获取二级栏目信息 * */ @RequestMapping("/onePart") public String onePart(ModelMap map,@RequestParam(value="id")Integer id){ String result = "index"; List<Part> onelist = partService.getPartlist(id); map.put("onelist", onelist); if(id==1){ result="index"; }else{ result ="Second/Lj-NewList"; } return result; } /** * 获取动态信息 * */ @RequestMapping("/newslist") public String newslist(ModelMap map,@RequestParam(value="id")Integer id){ this.index(map); List<News> list = partService.getnewlist(id); map.put("list", list); return "Second/Lj-NewList"; } }
解决方案:在web.xml 配置一个过滤器。是hibernate自带的一个session延迟关闭过滤。注意的是在hibernate3和hibernate4配置的不一样。当然还有一种就是把延迟加载关闭,但是这样数据大了之后,造成服务器运行效率级低。
<!-- 可以使spring自动事务延迟到视图解析后(用完数据后)才关闭 ,解决hibernate的延迟加载问题--> <filter> <filter-name>osivFilter</filter-name> <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class> <init-param> <!-- 指定过滤器使用的sessionFactory bean id,默认就是sessionFactory --> <param-name>sessionFactoryBeanName</param-name> <param-value>sessionFactory</param-value> </init-param> </filter> <filter-mapping> <filter-name>osivFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
发表评论
-
Java 设计模式源码
2020-08-17 20:17 141经过一段时间学习和实践,整理了绝大多数设计模式源码demo 。 ... -
mac ngrok 使用
2018-12-20 18:22 817ngrok 是一个反向代理,通过在公共端点和本 ... -
Java元组学习
2018-12-19 15:38 556在Java 中我们平时用的接口和方法 只是单一 ... -
密码学2 密码安全注意
2018-11-30 15:11 4921.Java API支持 位于java.security包及子 ... -
base64 和 base32 源码解析
2018-11-30 14:19 1410package com.zd.demo; import ... -
maven 常用命令
2018-01-22 14:43 329mvn compile 编译源代码 mvn test-comp ... -
上传excel 通过url下载文件
2017-07-06 16:22 1005/** * 下载图片 */ ... -
多线程实现原理并发机制
2017-03-07 20:29 752进程: 查询百度大致可以理解为一段具有独 ... -
网络编程TCP/IP协议组
2017-03-04 13:42 465TCP/IP是个协议组: 主要可以分为4层,分别是应 ... -
Guava包的ListenableFuture解析
2016-10-09 13:40 983package com.downjoy.test.guava. ... -
spring+guava事件异步分发处理
2016-10-09 09:56 4271Guava是Google开源的一个Java基础类库,它在Goo ... -
httpUtil工具和apche httpclient 工具类使用
2016-09-26 15:38 2331httpUtil请求网络请求工具: package demo ... -
mongodb+spring +morphia完整版框架搭建
2016-09-09 10:22 5658Morphia是一个开放源代 ... -
mongodb注解详解
2016-09-06 09:26 39861、@Entity 如果你想通过Morphia把你的对 ... -
自定义MD5加盐加密方式代码实现
2016-09-02 16:45 5012按照自己的理解对密码加盐加密。当用户注册时候会先生成盐值 ... -
密码学
2016-08-25 11:14 5211 密码学简介 2.1 ... -
kafka
2016-08-11 14:08 655Kafka is a distributed,partiti ... -
dubbo+zookeeper构建高可用分布式集群
2016-08-24 09:47 4899(1) 当服务越来越多时, ... -
java生产6为邀请码
2016-08-09 17:23 1889package demo.dcn.vo; import ... -
jxl
2016-08-09 14:30 450Java生成和操作Excel文件 package dem ...
相关推荐
Hibernate的级联操作(增,删,该)
使用Jquery实现下拉级联操作。 JSP+Jquery+JAVA+sql2005_sql
带CheckBox和级联操作的Tree 带CheckBox和级联操作的Tree 带CheckBox和级联操作的Tree
hibernate 的基础 常用的主键生成策略 持久化对象的三种状态 一级缓存的常用操作(save/update/saveOrUpdate/delete)一对多关联映射 级联操作
根据第一个下拉框选择的不同选项,第二个下拉框动态改变选项内容。
74HC595多片级联操作代码, 74HC595操作说明代码,注释详尽。
省市县区/乡-级联表以及数据
mysql ajax 级联操作。本案例可以很灵活的使用任何级别的级联操作.基于ssh框架的
AngularJS的级联操作,两级
JPA中的一对多双向关联与级联操作
Hibernate级联操作一对多demo Hibernate级联操作一对多demo Hibernate级联操作一对多demo
Hibernate级联操作.docx
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单
10_JPA详解_JPA中的一对多双向关联与级联操作.zip
基于级联型延迟信号消除(CDSC)的锁相环技术(CDSC-PLL),该锁相环克服了传统dq 锁相环在电网电压畸变或不对称时存在较大稳态误差的缺点。CDSC-PLL是在传统dq锁相环的控制环节中加入了一个 CDSC环节,即dqCDSCPLL...
级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单...
mysql级联更新和级联删除,区分有级联和没级联操作的区别之处
菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联菜单级联
JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果JSP级联效果