SDR /搜索映射冲突

时间:2017-08-03 21:53:53

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

我在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) {
        ...
    }
}

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

  

无法转换类型&#39; java.lang.String&#39;的值要求的类型   &#39; java.lang.Long中&#39;

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

如何解决这两个URI?

1 个答案:

答案 0 :(得分:1)

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

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

More info ...