spring-data-rest 相关问题

Spring Data REST(SDR)是一个Spring Data项目,旨在使Spring Data存储库作为REST服务公开。 SDR在内部使用Spring HATEOAS来创建HAL响应。

如何使用Repository中的默认方法在SpringDataRest中公开自定义端点?

@存储库 @RepositoryRestResource(collectionResourceRel =“myEntity”,路径=“myEntity”) 公共接口 MyEntity Repository 扩展了 JpaRepository @Repository @RepositoryRestResource(collectionResourceRel = "myEntity", path = "myEntity") public interface MyEntity Repository extends JpaRepository<MyEntity, Long>, JpaSpecificationExecutor<MyEntity> { default Page<MyEntity > findByFilters(Map<String, String> filters, Pageable pageable){ // this is a helper class that handles filtering Specification<MyEntity > spec = new GenericSpecification<>(filters, MyEntity .class); return findAll(spec, pageable); } MyEntity findByName(String name); } 我使用 SpringDataRest 生成样板 CRUD REST 端点,但对于过滤,我有自己的基于请求参数的逻辑,我在阅读 SpringDataRest 文档时找到的唯一解决方案是声明 NamedQueries就像 findByName 并且这个 生成类似这样的东西:{{entityPath}}/search/{{propertyNameUsingReflexion}},它以 name 作为参数。 这对于我的用例来说还不够。 有没有办法使用 SpringDataRest 将我的 findByFilters 方法公开为端点? PS:我不想在控制器中为每个实体创建端点来进行过滤。 我想我已经找到了一种使用 自定义 JPA 和 JDBC 存储库的常用方法的方法。 您需要定义另一个接口来指定要放入存储库的新方法: public interface MyEntitySpecificationExtension { Page<ChatUser> findByFilters(Map<String, String> filters, Pageable pageable); } 我发现有必要创建另一个存储库来实现规范: @Repository public interface MyEntitySpecificationRepository extends JpaRepository<MyEntity, Integer>, JpaSpecificationExecutor<MyEntity> { } 现在实现MyEntitySpecificationExtension,包装此存储库实现规范: @Component public class MyEntitySpecificationExtensionImpl implements MyEntitySpecificationExtension { // note from the docs that the 'Impl' suffix is necessary for JPA to be able to find the class to mixin with the repository @Autowired private MyEntitySpecificationRepository myEntitySpecificationRepository; @Override public Page<MyEntity> findByFilters(Map<String, String> filters, Pageable pageable) { // this is a helper class that handles filtering Specification<MyEntity> spec = new GenericSpecification<>(filters, MyEntity .class); return myEntitySpecificationRepository.findAll(spec, pageable); } } 您现在可以从 MyEntityRepository 中删除 findByFilters 和 JpaSpecificationExecutor,并且您需要它来扩展 MyEntitySpecificationExtension: @Repository @RepositoryRestResource(collectionResourceRel = "myEntity", path = "myEntity") public interface MyEntityRepository extends JpaRepository<MyEntity, Long>, MyEntitySpecificationExtension { MyEntity findByName(String name); } findByFilters 现在出现在超媒体列表中。如何使用 filters 查询参数是另一个问题:因为我还没有 GenericSpecification 的实现,所以我无法测试它是否有效。

回答 1 投票 0

Spring Data REST 支持反应式增删改查存储库吗?

我有非常简单和标准的 OrderRepository: @RepositoryRestResource(collectionResourceRel =“订单”,路径=“订单”) 公共接口 OrderRepository 扩展了 ReactiveCrudRepository 我有非常简单和标准的 OrderRepository: @RepositoryRestResource(collectionResourceRel="orders", path="orders") public interface OrderRepository extends ReactiveCrudRepository<Order, String> { } 使用以下命令访问服务器后: curl http://localhost:8080/api/orders 我收到以下回复: {"cause":null,"message":"reactor.core.publisher.FluxOnErrorResume cannot be cast to java.lang.Iterable"} 不,还没有。请关注此票以了解该主题的进展。

回答 1 投票 0

Spring Data Rest API - 实体对象在 Post 请求中作为 null

我创建了一个 spring-data-rest 控制器(Post 方法),它接受名为 IssueRequiredDetails 的自定义请求对象。该对象有另一个名为 IssueDocument 的对象作为属性。 ...

回答 1 投票 0

Spring Data Rest - 按多个属性排序

我有一个实体如下: 类人{ 字符串ID; 字符串名称; 字符串手数; } 使用 Spring Data Rest (Gosling Release Train),我可以指定 本地主机/人?排序=名称,a...

回答 3 投票 0

Spring Data Rest 指定默认顺序

我是 Spring Data Rest 的新手,看起来我正是想用它来轻松地将一些现有的数据库表公开为静态服务。我已经按照本指南成功地获得了一个示例。

回答 3 投票 0

Spring Data REST 事件处理程序是否使用单独的数据库事务?

Spring Data REST 具有以下事件处理程序,这些处理程序在 HTTP 请求(如 POST、PUT 等)上触发。 @RepositoryEventHandler(作者.class) 公共类 AuthorEventHandler { 记录器记录器 = ...

回答 1 投票 0

如何在多个 Spring Boot 应用程序之间共享 JPA 实体

我们希望在公开为微服务的两个应用程序之间共享 Employee。但是 Employee 有 JPA 定义,我们如何将其打包为一个可以跨共享的单独的 jar

回答 3 投票 0

无法使用 Spring Boot 找到 Spring Data Rest 端点

我第一次尝试 Spring Data Rest,但我似乎无法在 localhost:8080/books 找到我的存储库端点 有谁看到我配置错误了吗? 应用类 @

回答 3 投票 0

Spring-data-rest 和 Spring-data-jpa 是否用于生产级应用程序?

我正在学习 Spring Boot,我刚刚介绍了如何利用 Spring-Data-Rest 和 Spring-Data-Jpa 等服务创建应用程序。我知道这两项服务肯定会加快速度...

回答 1 投票 0

Spring Framework 4.2/Boot 1.3中如何根据Origin HTTP请求头设置动态Access-Control-Allow-Origin?

Spring 4.2 支持 CORS,但是必须手动设置允许的 Origin。与身份验证结合使用时会出现问题,因为 Access-Control-Allow-O 不支持身份验证...

回答 1 投票 0

将 Spring Security ACL 与 Spring Data REST 结合使用

我正在尝试授权 Spring Data REST 公开的 api。到目前为止,我能够进行基于角色的授权,即: @RepositoryRestResource(路径=“书”) 公共接口 BookRepository 扩展...

回答 1 投票 0

将 Spring Data Rest 与反应式存储库一起使用时,FluxUsingWhen 无法转换为 Iterable 错误

我配置了一个 ReactiveSortingRepository 来查看 Spring Data Rest 上的反应功能,过去我主要使用 PagingAndSortingRepository 将资源公开为 REST 端点,所以想要...

回答 1 投票 0

Spring控制器中没有方法映射时如何抛出错误信息

当Spring控制器中没有方法映射时如何抛出错误消息。 在下面的示例中 GET /api/v1/foos 不存在,有没有办法抛出通用消息(比如 api/v1/foos

回答 1 投票 0

MongoDB 和 Spring Data REST 的“PersistentEntity 不得为 null”异常

每次尝试使用 Spring Data REST 和 MongoDB 创建项目都会遇到同样烦人的问题。每个尝试访问 REST 端点的测试都会导致 java.lang.IllegalArgumentExcep...

回答 2 投票 0

使用 Postgresql 的 Spring JPA 本机查询中的值进行更新

我正在尝试使用 Spring JPA 实现以下目标。 将测试更新为 t 集 列_a = c.列_a 来自(值 ('123', 1), ('345', 2) // 这将是动态的 ) 作为 c(列_b, 列_a) 其中 c.

回答 1 投票 0

Spring Rest Respository Collection 名称区分大小写

我正在使用 Spring Boot 和 MongoDB,并尝试使用 Spring Rest 存储库通过 REST 公开它们。 我有一个名为 user 的 Mongo 集合和名为 User 的 Java 域模型类。我的休息

回答 1 投票 0

Spring Data Rest:“日期为空”查询引发 Postgres 异常

我使用 Spring Boot 和 Data Rest 在 Java8 中创建一个简单的微服务并获得 postgres 异常。 我的实体: @实体 公共类 ArchivedInvoice 实现可序列化 { ... @列...

回答 5 投票 0

覆盖 Spring Data REST 中的相关链接

我正在使用 Spring Boot 2、Spring Data REST、Spring HATEOAS。 假设我有一个模型: @EntityListeners({ContactListener.class}) @数据 @EqualsAndHashCode(callSuper = true) @NoArgs构造函数 @

回答 2 投票 0

Spring Data Rest - 从未使用自定义 LinkRelationProvider

我正在创建一个基于 spring-boot-starter-parent 2.6.1 的服务,并使用 spring data rest 来公开我的 JPA 存储库: 公共接口 PointRepo 扩展了 CrudRepository,String&g...

回答 1 投票 0

Spring Data Rest 和 Spring Data Envers:如何为扩展修订存储库的存储库公开 REST API

我在为我的存储库公开 RevisionRepository (Spring Data Envers) 端点时遇到问题,该端点扩展了 RevisionRepository,如下所示: @RepositoryRestResource(path = "学科",

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.