2017-08-03 115 views
1

我在Spring Boot 1.5.4中使用Spring Data REST,並且遇到了麻煩。SDR /搜索映射衝突

我定義庫:

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碰撞,但我不知道如何解決這個問題。我試圖在getTicket方法和TicketController定義之前放置@Order,但它沒有改變任何內容。

如何解決這兩個URI?

回答

1

使用正則表達式的URI模板模式:

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

More info ......