Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 自定义Spring数据中的延迟加载JPA+;休息控制器_Hibernate_Spring Data Jpa_Spring Data Rest - Fatal编程技术网

Hibernate 自定义Spring数据中的延迟加载JPA+;休息控制器

Hibernate 自定义Spring数据中的延迟加载JPA+;休息控制器,hibernate,spring-data-jpa,spring-data-rest,Hibernate,Spring Data Jpa,Spring Data Rest,按照中的一些建议,我创建了一个控制器来处理实体的一些自定义查询请求。这些类看起来像: @BasePathAwareController public class FooController implements ResourceProcessor<RepositorySearchesResource> { @Autowired FooRepo repo; @RequestMapping("/foo/search/findFooByAttribute")

按照中的一些建议,我创建了一个控制器来处理实体的一些自定义查询请求。这些类看起来像:

@BasePathAwareController
public class FooController implements ResourceProcessor<RepositorySearchesResource> {

    @Autowired
    FooRepo repo;

    @RequestMapping("/foo/search/findFooByAttribute")
    public ResponseEntity<PagedResources<Resource<Foo>>> findByAttribute(
            PersistentEntityResourceAssembler entityAssembler) {

        Page<Foo> results = repo.findAll(
                Specifications.where(FooSpec.isOpen()),
                new PageRequest(1, 20));

        return new ResponseEntity<PagedResources<Resource<Foo>>>(
                resourceAssembler.toResource(results),
                HttpStatus.OK);
    }

    @Override
    public RepositorySearchesResource process(
            RepositorySearchesResource resource) {
    ...
    }
}
@BasePathAwareController
公共类FooController实现ResourceProcessor{
@自动连线
FooRepo回购;
@请求映射(“/foo/search/findFooByAttribute”)
公共响应发现的属性(
PersistentEntityResourcesAssembler实体汇编程序){
页面结果=repo.findAll(
规格。其中(FooSpec.isOpen()),
新页面请求(1,20));
返回新响应(
resourceAssembler.toResource(结果),
HttpStatus.OK);
}
@凌驾
公共回购搜索资源流程(
RepositorySearchesResource(资源){
...
}
}

其中
FooRepo
是一个用
@RestResource
注释的存储库接口。如果执行GET to
/foo
(默认findAll),则端点能够在序列化过程中检索foo实体上的
@OneToMany
集合映射。但是在我的自定义存储库中,我得到了著名的
无法初始化代理-无会话
异常。关于保持Hibernate会话打开,如何使我的自定义控制器的行为与生成的控制器的行为相同?@RestResource似乎创建了该控制器?

您是否尝试使用RepositoryRestController而不是BasePathAwareController来注释控制器,而不是返回
ResponseEntity
,您是否尝试过使用
Resources.wrap()
从实体生成资源来返回
Resources
?也可用于
PagedResources
您是否尝试使用RepositoryRestController而不是BasePathAwareController来注释控制器而不是返回
ResponseEntity
,是否尝试使用
Resources.wrap()
从实体生成资源来返回
Resources
?也可用于
PagedResources