相关疑难解决方法(0)

JsonMappingException:无法初始化代理 - 没有Session

我正在构建一个使用和返回JSON的RESTful Web服务.当我尝试通过服务层从数据库中获取ESRBRating对象时,我遇到了以下堆栈跟踪.但是,当我将Spring Data JPA存储库直接注入控制器并使用它来获取ESRBRating ID时,它可以正常工作.但是,当通过服务层调用时,它不起作用.我在下面提供了堆栈跟踪和代码.有人可以向我解释为什么在通过服务层时会发生这种情况,而不是直接通过Spring Data JPA存储库时会发生这种情况吗?我该如何解决这个问题?

堆栈跟踪

Caused by: 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 net.jkratz.igdb.model.ESRBRating_$$_jvst319_0.getId(ESRBRating_$$_jvst319_0.java)
    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 com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:466)
    at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:639)
    ... 76 more
Run Code Online (Sandbox Code Playgroud)

调节器

@RestController
@RequestMapping(produces = "application/json", value="/esrbrating")
public class ESRBRatingController {

    @Inject
    ESRBRatingService esrbRatingService;

    @Inject
    ESRBRatingRepository esrbRatingRepository;

    private Logger logger = LoggerFactory.getLogger(getClass());

    /**
     * Returns all ESRB ratings in database
     * 
     * @return List of ESRBRating objects
     * @see …
Run Code Online (Sandbox Code Playgroud)

rest spring json spring-mvc spring-data-jpa

10
推荐指数
2
解决办法
3万
查看次数

标签 统计

json ×1

rest ×1

spring ×1

spring-data-jpa ×1

spring-mvc ×1