java jpa 字段 关联_jpa查询关联表懒加载数据initialize proxy no session
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相关推荐
- bootstrap 数据加载中提示_解决Quartz定时器中查询懒加载数据no session的问题
作者:下一秒升华 出自:CSDN 原文:blog.csdn.net/u013815546/article/details/53032445 相信大家在web开发过程中一定遇到过一种情况,Class班级 ...
- java 滚动加载数据_[Java教程]浏览器滚动条快到底部时自动加载数据
[Java教程]浏览器滚动条快到底部时自动加载数据 0 2015-11-30 15:00:44 1 2 3 4 5 6 ");24 main.append(" hello worl ...
- 14、mybatis多表关联查询 association定义关联对象封装规则及懒加载
文章目录 1.使用association单步查询 1).EmployeeMapper 2).EmployeeMapper.xml 3).Test 2.使用association进行分步查询 4).De ...
- mysql 懒加载数据_jpa如何懒加载大字段,懒加载之后又如何获取懒加载字段
前言:对于大字段,我们在查询列表的时候不需要查询,但是修改的时候有需要展示大字段内容,怎么办 问1.jpa如何懒加载大字段?即查询列表的时候不查询出来 问2.懒加载之后又如何获取懒加载字段.比如,在后 ...
- MySql学习笔记(一):创建数据库,创建表,加载数据,数据检索
一.准备工作 1.1 安装mysql 一路next的操作这里就不做记录了. 1.2 配置mysql 安装完成后,将下面路径C:\Program Files\MySQL\MySQL Server 5.7 ...
- 15、mybatis一对多关联查询 collection定义关联集合封装规则及懒加载
文章目录 1.collection定义关联集合封装规则单步查询 1).Dept增加集合属性 2).DeptMapper增加查询接口 3).DeptMapper.xml增加collection配置 4) ...
- Java设计模式--使用内部类实现线程安全且懒加载的单例模式
第一种方式: package com.zhangxueliang.demo.springbootdemo.thread;/*** @ProjectName springbootdemo_src* @C ...
- JPA/hibernate懒加载原理分析及JSON格式API反序列化时连环触发懒加载问题的解决
什么是懒加载 JPA是java持久层的API,也就是java官方提供的一个ORM框架,Spring data jpa是spring基于hibernate开发的一个JPA框架.Spring data j ...
- SpringBoot JPA 懒加载的问题 ---No session
当前项目中使用的orm框架为 JPA,其所使用的实现类是以Hibernate为基础的: 问题描述: 代码逻辑大致如下 public class EntiryA{int a;int b;String c ...
- 11-分步查询懒加载
分步查询--懒加载模式 目录 懒加载模式示例 不使用懒加载 使用懒加载 aggressiveLazyLoading lazyLoadTriggerMethods 所谓懒加载,也称延时加载,是指不一下子 ...
最新文章
- 修复.NET的HttpClient
- php禁止指定ip访问网站,方法分享:如何利用.htaccess禁止某个IP访问网站
- [BZOJ] 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
- Java字符串String比较不要用==原因
- java四连环游戏编程_Java实现四连环棋游戏
- mysql用的sql标准_标准SQL语言的用法_MySQL
- POJ 2553 The Bottom of a Graph
- 百度ERNIE新突破!登顶中文医疗信息处理权威榜单CBLUE冠军
- reviewboard mysql_Ubuntu下ReviewBoard安装全过程_MySQL
- 计算机 国际顶尖级会议排名,计算机学科国际会议排名
- 用 django 构建翻译网站——软件工程课程设计
- 根据起始点经纬度、距离、方位角计算目标点经纬度的方法
- python 暴力破解 excel加密文件
- CDH 6.2.0启用kerberos认证
- 罗永浩将举办“老人与海”黑科技发布会;京东正式宣告:全面向技术转型;英特尔因CPU短缺向PC厂商道歉 | EA周报...
- 从mpeg ts文件中提取I帧(1):将ts包拼装为section或pes包
- java 图形处理_java图形图象处理
- 我为什么要做富文本编辑器【wangEditor5总结】
- 基于AUTOSAR开发工具链的AUTOSAR软件实战开发---基于工具链AUTOSAR架构的开发流程
- 基于spring的系统设计与开发ADD ME
热门文章
- Qt的环境与工具、信号与槽
- Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析
- RACCommand
- 多学习,C++值得看的书籍
- 拓端tecdat|游记数据感知旅游目的地形象
- 拓端tecdat|R语言马尔可夫转换模型研究交通伤亡人数事故预测
- 案例7-1 模拟EXCEL排序 (25 分)(根据结构体某一元素排序)
- css基础知识汇总4
- DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade
- python不显示warnings