方法 count(JobViewWrapper) 已经定义

method count(JobViewWrapper) is already defined

我目前正在学习spring启动并遇到错误消息

method count(JobViewWrapper) is already defined

是的,因为它有2个相同的方法名,但是方法有2个独立的功能,第一个是统计所有删除标志1的作业。 第二个(count-active),是统计所有删除标志为1且为活动标志1的作业。

所以我需要这 2 个方法,有解决方法吗?

@PostMapping(value = "/count")
public long count(@RequestBody(required = false) JobViewWrapper wrapper) {
    System.out.println("into controller count");
    if (wrapper == null) {
        wrapper = new JobViewWrapper();
    }
    System.out.println("Prepare to count service");
    return JobService.countLazyView();
}
    
@PostMapping(value = "/count-active")
public long count(@RequestBody(required = false) JobViewWrapper wrapper) {
    System.out.println("into controller count");
    if (wrapper == null) {
        wrapper = new JobViewWrapper();
    }
    System.out.println("Prepare to count service");
    return JobService.countLazyViewIsActive();
}

我的服务

public long countLazyView() {
    return lowonganKerjaRepo.countLazyView();
}
    
public long countLazyViewIsActive() {
    return lowonganKerjaRepo.countLazyViewIsActive();
}

如果你真的想overload method count必须select可用的三个选项之一:

  1. 提供不同数量的参数:
@PostMapping(value = "/count")
public long count(@RequestBody(required = false) JobViewWrapper wrapper) {
// ...
    return JobService.countLazyView();
}

@PostMapping(value = "/count-active")
public long count() {
    return JobService.countLazyViewIsActive();
}
  1. 提供不同类型的参数:
@PostMapping(value = "/count")
public long count(@RequestBody(required = false) JobViewWrapper wrapper) {
// ...
    return JobService.countLazyView();
}

@PostMapping(value = "/count-active")
public long count(@RequestBody(required = false) ActiveJobViewWrapper wrapper) {
    return JobService.countLazyViewIsActive();
}
  1. 提供不同顺序的参数(在这种情况下似乎不适用)。

如果这些选项中的 none 个可以 select 可用,您将有以下选项:

  1. 为这些方法提供不同的名称 count()countActive

  2. 用一个具有附加参数的方法替换这些方法(API 调用可能更改为 /count?active=true):

@PostMapping(value = "/count")
public long count(
    @RequestParam(name = "active", required = false, defaultValue = "false") Boolean active, 
    @RequestBody(required = false) JobViewWrapper wrapper) {
// ...
    
    return active ? JobService.countLazyViewIsActive() : JobService.countLazyView();
}