我需要获得多个参数,如名字,姓氏,手机等所需的客户信息。
为此,我决定使用queryparams。
如果我定义我的方法如下
@GetMapping("/customers")
public ResponseEntity<EntityModel<Customer>> findCustomerByFirstName(@RequestParam(required = false) String firstName) {
System.out.println();
return service.findCustomerByFirstName(firstName) //
.map(assembler::toModel) //
.map(ResponseEntity::ok) //
.orElse(ResponseEntity.notFound().build());
}
//Last-name
@GetMapping("/customers")
public ResponseEntity<EntityModel<Customer>> findCustomerByLastName(@RequestParam(required = false, name = "lastName") String lastName) {
return service.findCustomerByLastName(lastName) //
.map(assembler::toModel) //
.map(ResponseEntity::ok) //
.orElse(ResponseEntity.notFound().build());
}
Spring给了我以下的例外。
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'customerController' method
com.test.cas.controller.CustomerController#findCustomerByFirstName(String)
to {GET [/api/customers/]}: There is already 'customerController' bean method
com.test.cas.controller.CustomerController#findCustomerByLastName(String) mapped.
任何克服这一问题的建议都将不胜感激。
1条答案
按热度按时间uoifb46i1#
只使用一个Map到一个方法并执行类似操作。
这可以用jpa标准规范和一个单独的服务层来编写,但仅限于主要思想。