You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

POST请求批量提交JSON数组对象时Getter方法报错,如何解决?

问题解决:批量添加对象时Getter方法报错的处理

错误原因

你遇到的"Cannot resolve method 'myGetter' in 'List'"错误,本质是两个问题:

  1. 直接在List集合上调用了InvoiceDTO的Getter方法:List是集合容器,本身没有InvoiceDTO的属性Getter,必须遍历集合中的每个InvoiceDTO实例再调用对应方法。
  2. InvoiceDTO类缺少Getter方法:你只给DTO加了@NoArgsConstructor,Lombok不会自动生成字段的Getter,即使遍历到单个对象,也无法调用Getter。

解决方案

1. 给InvoiceDTO补充Getter方法

通过Lombok的@Getter注解(或@Data注解,包含Getter、Setter、toString等更多功能),自动生成所有字段的Getter方法。同时修正你代码中accountNumber字段的注解错误:

@NoArgsConstructor
@Getter // 添加该注解生成所有字段的Getter
public class InvoiceDTO {

  @NotNull(message = "PersonId can't be null")
  @PersonId
  private String personId;

  @NotNull(message = "invoiceDate can't be null")
  @PastOrPresent
  @JsonFormat(pattern = "yyyy-MM-dd")
  private LocalDate invoiceDate;

  @NotNull(message = "invoiceNumber can't be null")
  private String invoiceNumber;

  @NotNull(message = "phone number can't be null")
  private Long phoneNumber;

  @NotNull(message = "invoiceAmount can't be null")
  private Double invoiceAmount;

  @NotNull(message = "accountNumber can't be null") // 修正原错误的message内容
  private String accountNumber;

  private int msdin;
}

2. 正确遍历List集合调用Getter

在处理批量请求的方法中,遍历List<InvoiceDTO>中的每个对象,再调用对应的Getter方法,示例代码如下:

@PostMapping("/invoices/batch")
public ResponseEntity<Void> batchAddInvoices(@RequestBody List<InvoiceDTO> invoiceList) {
    // 遍历集合中的每个InvoiceDTO实例
    for (InvoiceDTO invoice : invoiceList) {
        // 对单个对象调用Getter
        String personId = invoice.getPersonId();
        LocalDate invoiceDate = invoice.getInvoiceDate();
        String invoiceNumber = invoice.getInvoiceNumber();
        // 后续业务逻辑处理...
    }
    return ResponseEntity.ok().build();
}

内容的提问来源于stack exchange,提问作者DarkBot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 06:55:20