springmvc4+jpa在service查询关联关系表的时候返回懒加载数据,当希望获取懒加载的时候发现session已经关闭了,然而我们不希望在service层就关闭session,懒加载的数据可能还需获取。例如一对多关联关系。

一对多关系

实体类:Teacher.java//懒加载

@OneToMany(fetch= FetchType.LAZY,cascade = CascadeType.ALL)

@JoinColumn(name="teacher_id")

public Set getStudents() {

return students;

}

实体类:Student.java//懒加载

@ManyToOne(fetch= FetchType.LAZY)

@JoinColumn(name="teacher_id")

public Teacher getTeacher() {

return teacher;

}

Teacher和Student表,一对多关联关系,并加上了懒加载。

关联关系懒加载

例如在查询一条学生信息,Student关联了Teacher。

在用Jpa Repository 查询完的时候已经session已经关闭,在获取Teacher的时候抛出could not initialize proxy - no Session@Autowired

private StudentRepository studentRepository;

@Override

public Student findById(Long id){

Student student = studentRepository.findOne(id);

Teacher teacher = student.getTeacher();

System.out.println(teacher);

Set students = teacher.getStudents();

System.out.println(students);

return student;

}

解决办法

很简单的,springmvc已经为我们提供了事务注解。直接注解@Transactional就OK。import org.springframework.transaction.annotation.Transactional;

...

@Override

@Transactional(readOnly = true)//查询的只读就行

public Student findById(Long id){

Student student = studentRepository.findOne(id);

Teacher teacher = student.getTeacher();

System.out.println(teacher);

Set students = teacher.getStudents();

System.out.println(students);

return student;

}

注解不生效

1、是否开启了对注解的解析,如:

...

...

2、spring初始化是否加入

contextConfigLocation

classpath:spring-*.xml

异常参考严重: Servlet.service() for servlet [spring] in context with path [] threw exception [Request processing failed; nested exception is org.hibernate.LazyInitializationException: could not initialize proxy - no Session] with root cause

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:165)

at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:286)

at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:185)

at com.weizhixi.entity.Teacher_$$_jvst6e0_1.toString(Teacher_$$_jvst6e0_1.java)

at java.lang.String.valueOf(String.java:2847)

at java.io.PrintStream.println(PrintStream.java:821)

at org.apache.tomcat.util.log.SystemLogHandler.println(SystemLogHandler.java:269)

at com.weizhixi.service.impl.StudentServiceImpl.findById(StudentServiceImpl.java:29)

at com.weizhixi.controller.IndexController.find(IndexController.java:31)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:606)

at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)

at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)

at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114)

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)

at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)

at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)

at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:442)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1083)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:640)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

原创文章,转载请注明出处:https://www.weizhixi.com/article/63.html

java jpa 字段 关联_jpa查询关联表懒加载数据initialize proxy no session相关推荐

  1. bootstrap 数据加载中提示_解决Quartz定时器中查询懒加载数据no session的问题

    作者:下一秒升华 出自:CSDN 原文:blog.csdn.net/u013815546/article/details/53032445 相信大家在web开发过程中一定遇到过一种情况,Class班级 ...

  2. java 滚动加载数据_[Java教程]浏览器滚动条快到底部时自动加载数据

    [Java教程]浏览器滚动条快到底部时自动加载数据 0 2015-11-30 15:00:44 1 2 3 4 5 6 ");24 main.append(" hello worl ...

  3. 14、mybatis多表关联查询 association定义关联对象封装规则及懒加载

    文章目录 1.使用association单步查询 1).EmployeeMapper 2).EmployeeMapper.xml 3).Test 2.使用association进行分步查询 4).De ...

  4. mysql 懒加载数据_jpa如何懒加载大字段,懒加载之后又如何获取懒加载字段

    前言:对于大字段,我们在查询列表的时候不需要查询,但是修改的时候有需要展示大字段内容,怎么办 问1.jpa如何懒加载大字段?即查询列表的时候不查询出来 问2.懒加载之后又如何获取懒加载字段.比如,在后 ...

  5. MySql学习笔记(一):创建数据库,创建表,加载数据,数据检索

    一.准备工作 1.1 安装mysql 一路next的操作这里就不做记录了. 1.2 配置mysql 安装完成后,将下面路径C:\Program Files\MySQL\MySQL Server 5.7 ...

  6. 15、mybatis一对多关联查询 collection定义关联集合封装规则及懒加载

    文章目录 1.collection定义关联集合封装规则单步查询 1).Dept增加集合属性 2).DeptMapper增加查询接口 3).DeptMapper.xml增加collection配置 4) ...

  7. Java设计模式--使用内部类实现线程安全且懒加载的单例模式

    第一种方式: package com.zhangxueliang.demo.springbootdemo.thread;/*** @ProjectName springbootdemo_src* @C ...

  8. JPA/hibernate懒加载原理分析及JSON格式API反序列化时连环触发懒加载问题的解决

    什么是懒加载 JPA是java持久层的API,也就是java官方提供的一个ORM框架,Spring data jpa是spring基于hibernate开发的一个JPA框架.Spring data j ...

  9. SpringBoot JPA 懒加载的问题 ---No session

    当前项目中使用的orm框架为 JPA,其所使用的实现类是以Hibernate为基础的: 问题描述: 代码逻辑大致如下 public class EntiryA{int a;int b;String c ...

  10. 11-分步查询懒加载

    分步查询--懒加载模式 目录 懒加载模式示例 不使用懒加载 使用懒加载 aggressiveLazyLoading lazyLoadTriggerMethods 所谓懒加载,也称延时加载,是指不一下子 ...

最新文章

  1. 修复.NET的HttpClient
  2. php禁止指定ip访问网站,方法分享:如何利用.htaccess禁止某个IP访问网站
  3. [BZOJ] 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
  4. Java字符串String比较不要用==原因
  5. java四连环游戏编程_Java实现四连环棋游戏
  6. mysql用的sql标准_标准SQL语言的用法_MySQL
  7. POJ 2553 The Bottom of a Graph
  8. 百度ERNIE新突破!登顶中文医疗信息处理权威榜单CBLUE冠军
  9. reviewboard mysql_Ubuntu下ReviewBoard安装全过程_MySQL
  10. 计算机 国际顶尖级会议排名,计算机学科国际会议排名
  11. 用 django 构建翻译网站——软件工程课程设计
  12. 根据起始点经纬度、距离、方位角计算目标点经纬度的方法
  13. python 暴力破解 excel加密文件
  14. CDH 6.2.0启用kerberos认证
  15. 罗永浩将举办“老人与海”黑科技发布会;京东正式宣告:全面向技术转型;英特尔因CPU短缺向PC厂商道歉 | EA周报...
  16. 从mpeg ts文件中提取I帧(1):将ts包拼装为section或pes包
  17. java 图形处理_java图形图象处理
  18. 我为什么要做富文本编辑器【wangEditor5总结】
  19. 基于AUTOSAR开发工具链的AUTOSAR软件实战开发---基于工具链AUTOSAR架构的开发流程
  20. 基于spring的系统设计与开发ADD ME

热门文章

  1. Qt的环境与工具、信号与槽
  2. Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析
  3. RACCommand
  4. 多学习,C++值得看的书籍
  5. 拓端tecdat|游记数据感知旅游目的地形象
  6. 拓端tecdat|R语言马尔可夫转换模型研究交通伤亡人数事故预测
  7. 案例7-1 模拟EXCEL排序 (25 分)(根据结构体某一元素排序)
  8. css基础知识汇总4
  9. DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade
  10. python不显示warnings