当前位置: 首页 > 知识库问答 >
问题:

Springboodate实体问题"无法将'java.lang.String'类型的值转换为所需类型'java.util.Date'

公冶龙野
2023-03-14

当我尝试使用这些url时:http://www.localhost:8080/api/employee/search?startDate=2000-10-22

此错误消息显示:"未能将'java.lang.String'类型的值转换为所需的类型'java.util.Date';嵌套异常org.springframework.core.convert.ConversionFailedException:未能将值'2000-10-22'从类型[java.lang.String]转换为类型[@org.springframework.web.bind.annotation.Request estParamjava.util.Date];嵌套异常java.lang.IllegalArgumentException"

参数:起始日期=2000-10-22工资=10000

这里的问题是什么?

员工类别:

@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@Entity
@Table(name = "employee")
public class Employee {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @NotBlank
    private String nationalId;

    @NotBlank
    private String name;

    @NotBlank
    private String surname;

    private Integer salary;

    @JoinColumn(name="start_date")
    @JsonFormat(pattern="yyyy-MM-dd")
    private Date startDate;

    private String office;

    private String department;

在我的存储库中查询:

  @Query("Select e FROM Employee e  " +
            "where " +
            " (:startDate is NULL or e.startDate > :startDate) " +
            " AND " +
            " (:salary is NULL or e.salary > :salary) ")
    List<Employee> searchEmployees(Date startDate,Integer salary);

服务Impl:

 @Override
    public List<Employee> searchEmployees(Date startDate,Integer salary){
        List <Employee> employees = employeeRepository.searchEmployees(startDate,salary);
        return employees;
    }

控制器:

@GetMapping(path="/search")
    public ResponseEntity<List<Employee>> searchEmployees(@RequestParam("startDate") Date startDate,
                                                          @RequestParam("salary") Integer salary){
        return ResponseEntity.ok(employeeService.searchEmployees(startDate,salary));
    }

共有2个答案

白宏大
2023-03-14

问题是java转换字符串到日期你可以试试这个

@GetMapping(path="/search")
public ResponseEntity<List<Employee>> searchEmployees(@RequestParam("startDate") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date startDate,
                                                      @RequestParam("salary") Integer salary){
    return ResponseEntity.ok(employeeService.searchEmployees(startDate,salary));
}
林星阑
2023-03-14

这是因为默认情况下,Spring无法将String参数转换为任何日期或时间对象。

改用这个。

@RequestParam@DateTimeFormat(pattern=“yyyy-MM-dd”)日期开始日期

 类似资料:
  • 我是Spring MVC的新手,试图构建一个示例应用程序,我试图将数据保存到一个名为EmployeeDetails的表中,该表与表用户有一对一的关系。提交表单后,我在字段“user”的对象“employee details”中得到了这个错误字段:rejected value[Users];代码[typemismatch.employeeDetails.user,typemismatch.user,

  • 这是控制器代码部分: 我收到这条消息: 出现错误(类型=错误请求,状态=400)。无法将类型[java.lang.String]的值转换为所需类型[java.util.Date];嵌套异常为org.springframework.core.convert.conversionfailedexception:无法将值“Wed Jun 08 00:00:00 WET 2016”从类型[java.lan

  • 我有两个实体,它们使用一个主键互相引用,主键是一个实体的整数。我不确定我做这件事的方式是否正确。 下面是引用主键id为int的实体 下面是我们从上面的实体中将外键设置为Kmichango kandaMchango的实体。 这里是表单的一部分,我在这里提交了用户在jumuiya_michango_form.html中提供的数据 下面是我的控制器中用于链接到表单和发布数据的两个方法 在我提交表单后,我

  • 我正试图通过提供JSON格式的所需请求来使用postman来访问一个服务: 邮递员屏幕 但我得到了一个错误: “无法将类型”java.lang.String“的值转换为所需的类型”SampleRequestObject“;嵌套异常为java.lang.IllegalStateException:无法将类型[java.lang.String]的值转换为所需类型“ 控制器 SampleRequestO

  • 我正在关注Spring in Action 5,在按下提交按钮后创建Taco模型时遇到问题。这是我的设计Taco控制器类: 以及我捕获的错误消息: 炸玉米饼实体如下所示: 以及我的配料实体: 这是一个html页面,必须使用所选成分创建新的Taco对象: 我该怎么修理它?谢谢你的预付款。

  • 问题内容: 我想使用@Value注释注入Double属性,例如: 并使用Spring属性占位符(属性文件): 我得到异常: org.springframework.beans.TypeMismatchException:无法将类型“ java.lang.String”的值转换为所需的类型“ java.lang.Double”;嵌套的异常是java.lang.NumberFormatExceptio