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

无法将“java.lang.String”转换为“Java . time . local datetime”(Spring)

何向荣
2023-03-14

我在让这个小应用程序在Spring启动中工作时遇到问题。这包括携带所有在2个日期之间注册的“客户”。

实体

@Entity
@Setter
@Getter
@Table(name = "clients")
public class Client implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Long id;

    @Column(name = "name")
    private String name

    @Column(name = "surname")
    private String surname;

    @Column(name = "registration_date")
    private LocalDateTime registrationDate

}

存储库:

@Query(value = "SELECT * FROM clients WHERE registration_date >= :from AND 
registration_date <= :to", nativeQuery = true)
List<Cliente> findRegisteredClients(LocalDateTime from, LocalDateTime to);

服务:

@ Transactional public List findRegisteredClients(local datetime from,LocalDateTime to)抛出异常{ try { return client repository . findRegisteredClients(from,to);} catch (Exception e) { throw新异常(e . getmessage());}

控制器:

@

GetMapping("/findClients/{from}/{to}")
    public ResponseEntity<?> getRegisteredClients(@PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDateTime from,
                                                    @PathVariable @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDateTime to) {
        try {
            return ResponseEntity.status(HttpStatus.OK).body(clientService.findRegisteredClients(from, to));
        } catch (Exception e) {
            return ResponseEntity.status(HttpStatus.NOT_FOUND).body("{\"message\": \"Error. Please try again later.\"}");
        }
    }

这些是到目前为止我在数据库中的记录(使用MySql):

    < li>ID: 1,姓名:John,姓氏:Terry,注册日期:2021-06-03 19:11:16.000000 < li>ID: 2,姓名:Philip,姓氏:Turkey,注册日期:2021-06-03 19:15:16.000000

我在 Postman 中尝试的终结点如下:

http://localhost:9000/api/v1/clients/findClients/2021-06-03/2021-06-03

运行它带给我的是这个问题题目的错误。我肯定犯了一个非常严重的错误。

澄清:我正在使用LocalDateTime处理实体“Client ”,因为我必须处理从日志中获得的小时和分钟。

提前感谢您的任何帮助!

共有1个答案

欧阳鸿德
2023-03-14

使用java日期解析器解析存储日期的字符串。

字符串 sDate1=“03/06/2021”;
//注意这里的格式

日期日期1=新的简单日期格式(“日/月/年”).parse(sDate1);System.out.println(sDate1 “\t” date1);

可以参考https://docs . Oracle . com/javase/8/docs/API/Java/time/format/datetime formatter . html。

 类似资料: