Jpa no session 问题解决方案

package com.zhao.system;

import com.common.utils.IdWorker;
import com.common.utils.JwtUtils;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter;

@SpringBootApplication(scanBasePackages = "com")
@EntityScan(value = "com.domain.company.system")
public class SystemApplication {
    public static void main(String[] args) {
        SpringApplication.run(SystemApplication.class,args);
    }
    @Bean
    public IdWorker idWorker(){
        return  new IdWorker();
    }

    /**
     * 解决jpa no session 问题
     *  在java对象转为json数据格式的时候,对象中的属性,因为jpa加载策略为延迟加载。在controller中转对象中属性为json数据,通过代理对象查询数据库,此时controller中session已经关闭。
     *
     */
    @Bean
    public OpenEntityManagerInViewFilter  openEntityManagerInViewFilter(){
        return  new OpenEntityManagerInViewFilter();
    }

    @Bean
    public JwtUtils jwtUtils(){
        return  new JwtUtils();
    }

}
View Code

在启动类添加

 @Bean
    public OpenEntityManagerInViewFilter  openEntityManagerInViewFilter(){
        return  new OpenEntityManagerInViewFilter();
    }

 

posted @ 2020-01-27 17:49  Angry-rookie  阅读(534)  评论(0)    收藏  举报