gpt4 book ai didi

spring-data-jpa - 如何将自定义方法添加到 Spring Data Rest JPA 实现并利用 HATEOAS 支持?

转载 作者:行者123 更新时间:2023-12-04 00:56:10 33 4
gpt4 key购买 nike

我有一个使用 JPA 进行查询实现的 Spring Data Rest Repository Controller ,我需要添加一些使用 JPA 支持的标准 queryByExample 方法无法完成的自定义查询方法。我创建了一个具有必要方法的 Impl 类,但我无法识别它。我看到我可以使用标准的 Spring MVC Controller ,但我想要一个统一的 API,基本上我真正想要的是实现我自己的自定义/search 方法。

即使使用自定义 Controller ,问题是不再提供 HAL 链接和其他相关项目。

Spring 人员可以花一些时间让某人记录如何做一些更高级的事情吗?我猜有时必须实现自己的搜索方法是相当普遍的,并且花时间弄清楚如何做到这一点是值得的。

最佳答案

一个简单的实现可能如下所示:

@BasePathAwareController
class CustomInvocationsController implements ResourceProcessor<RepositorySearchesResource> {

private final YourRepository repository;

public CustomInvocationsController(YourRepository repository) {
this.repository = repository;
}

@RequestMapping(…)
ResponseEntity<?> handleRequest(PersistentEntityResourceAssembler assembler)

// invoke repository
// Use assembler to build a representation
// return ResponseEntity
}

@Override
public RepositorySearchesResource process(RepositorySearchesResource resource) {
// add Link to point to the custom handler method
}
}

需要注意的几点:
  • 使用 @BasePathAwareController而不是普通的 @Controller确保无论您将处理程序方法映射到什么,它也会考虑您在 Spring Data REST 上配置的基本路径。
  • 在请求映射中,使用您从 Spring MVC 中已知的所有内容,选择合适的 HTTP 方法。
  • PersistentEntityResourceAssembler基本上抽象了在 PersistentEntityResource 中设置表示模型以便 Spring Data REST 对关联等的特定处理发挥作用(关联成为链接等。
  • 实现 ResourceProcessor后处理RepositorySearchesResource为呈现所有搜索的资源返回。目前,无法确定该资源呈现的是哪种域类型。我提交并修复了 DATAREST-515来改善这一点。
  • 关于spring-data-jpa - 如何将自定义方法添加到 Spring Data Rest JPA 实现并利用 HATEOAS 支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29570962/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com