2017-08-03 116 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 ......