【问题标题】:SDR /search mapping collisionSDR /搜索映射冲突
【发布时间】:2017-08-03 21:53:52
【问题描述】:

我在 Spring Boot 1.5.4 中使用 Spring Data REST,但遇到了问题。

我定义了存储库:

public interface TicketRepository extends JpaRepository<Ticket, Long> {

    @RestResource(path = "find-by-ticket-list-id")
    Page<Ticket> findByTicketListIdOrderByPosition(@Param("ticketListId") Long ticketListId, Pageable pageable);
}

我需要一个特定的 GET 方法。所以我定义了控制器:

@RepositoryRestController
public class TicketController {

    @GetMapping("/tickets/{id}")
    public ResponseEntity<?> getTicket(@PathVariable Long id, PersistentEntityResourceAssembler assembler) {
        ...
    }
}

现在,当我尝试获取搜索资源列表时,出现错误

无法将“java.lang.String”类型的值转换为所需类型 'java.lang.Long'

我知道这是由于/tickets/{id}/tickets/search 的冲突,但我不知道如何处理。我尝试将@Order 放在getTicket 方法之前和TicketController 定义之前,但它没有改变任何东西。

如何解析两个 URI?

【问题讨论】:

    标签: java spring spring-mvc spring-boot spring-data-rest


    【解决方案1】:

    在 URI 模板模式中使用正则表达式:

    @GetMapping("/tickets/{id:\\d+}")
    public ResponseEntity<?> getTicket(@PathVariable Long id, PersistentEntityResourceAssembler assembler) {
        ...
    } 
    

    More info...

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 2014-05-10
      • 2015-09-10
      • 2013-04-24
      • 2015-08-17
      • 2013-02-08
      • 2012-05-12
      • 1970-01-01
      相关资源
      最近更新 更多