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