Error : java.lang.IllegalArgumentException Cannot convert LocalDate in Spring Boot with Graphql?

Error : java.lang.IllegalArgumentException Cannot convert LocalDate in Spring Boot with Graphql?

我在从 Graphiql 中定义的过滤器查询中获取值时遇到问题。

我在 FilterField 中将值转换为 Localdate 时出错。

如何解决生日值的问题?

这是我在 Graphiql 中定义的 查询片段,如下所示。

{
doctorsWithFilter(filter: {
    birthday:{
      operator: "birthdayDate" 
      value: "1990-05-01"
    }
  }) {
    id
    firstName
    lastName
    age
    salary
    position
    birthday
  }
}

这是我的 FilterField 对象,如下所示。

@Data
public class FilterField {

    private String operator;
    private String value;

    public Predicate generateCriteria(CriteriaBuilder builder, Path field) {
        try {
            int v = Integer.parseInt(value);
            switch (operator) {
                case "lt": return builder.lt(field, v);
                case "le": return builder.le(field, v);
                case "gt": return builder.gt(field, v);
                case "ge": return builder.ge(field, v);
                case "eq": return builder.equal(field, v);
            }
        } catch (NumberFormatException e) {
            switch (operator) {
                case "endsWith": return builder.like(field, "%" + value);
                case "startsWith": return builder.like(field, value + "%");
                case "contains": return builder.like(field, "%" + value + "%");
                case "eq": return builder.equal(field, value);
                case "birthdayDate":

                    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

                    try {
                        Date dBegin = dateFormat.parse("1980-01-01");
                        Date dEnd = dateFormat.parse(value); // "1990-05-01"

                        return builder.between(field,
                                dBegin,
                                dEnd);

                    } catch (ParseException parseException) {
                        parseException.printStackTrace();
                    }

            }
        }

        return null;
    }
}

这是我在查询中的错误,如下所示。

java.lang.IllegalArgumentException: Parameter value [Tue Jan 01 00:00:00 TRT 1980] did not match expected type [java.time.LocalDate (n/a)]

这是我的项目文件:My Project

-> 在 birthdayDate 的情况下将 Date 转换为 LocalDate。

这是我的答案。

case "birthdayDate":

                    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

                    String[] values = value.split(",");

                    //Date dBegin = dateFormat.parse(values[0]); // "1980-01-01"
                    //Date dEnd = dateFormat.parse(values[1]); // "1990-05-01"

                    LocalDate dBegin = LocalDate.parse(values[0], formatter);
                    LocalDate dEnd = LocalDate.parse(values[1], formatter);

                    System.out.println("dBegin : " + dBegin);
                    System.out.println("dEnd : " + dEnd);

                    return builder.between(field,
                                dBegin,
                                dEnd);