Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JPA保存SQL的datetime来修复;从字符串转换日期和/或时间时,转换失败。”;_Java_Sql_Spring Boot_Jpa - Fatal编程技术网

Java 如何使用JPA保存SQL的datetime来修复;从字符串转换日期和/或时间时,转换失败。”;

Java 如何使用JPA保存SQL的datetime来修复;从字符串转换日期和/或时间时,转换失败。”;,java,sql,spring-boot,jpa,Java,Sql,Spring Boot,Jpa,我遇到了一个非常令人沮丧的问题。。我无法使用JPA save函数存储SQL的正确datetime对象,出现以下错误: com.microsoft.sqlserver.jdbc.SQLServerException: Conversion failed when converting date and/or time from character string. 这是我的代码: 在控制器中: import java.sql.Timestamp; @PostMapping("/reco

我遇到了一个非常令人沮丧的问题。。我无法使用JPA save函数存储SQL的正确datetime对象,出现以下错误:

com.microsoft.sqlserver.jdbc.SQLServerException: Conversion failed when converting date and/or time from character string.
这是我的代码:

在控制器中:

import java.sql.Timestamp;

@PostMapping("/record")
public String updateRecord(@RequestParam("createDatetime") Timestamp createDatetime) { 
        
Date date = new Date();
        Timestamp ts=new Timestamp(date.getTime());

        Record record = new Record();
        Record.setCreateDatetime(ts);

        recordService.save(record);
}
在实体中:

private Timestamp createDatetime;

@Column(name = "createDatetime")
public Timestamp getCreateDatetime() {
        return createDatetime;
}

public void setCreateDatetime(Timestamp createDatetime) {
        this.createDatetime= createDatetime;
}

非常感谢

尝试用@Temporal(TemporalType.TIMESTAMP)注释createDateTime字段。

我建议您使用现代
java.time的
LocalDateTime
。JPA自动将
LocalDateTime
转换为数据库
datetime
。要获取当前日期时间,请使用
LocalDateTime.now()

您也可以将其作为
@RequestParam

@PostMapping("/record")
public String updateRecord(@RequestParam("createDatetime") LocalDateTime createDatetime) {
    ...
}

(1) 显示您的表模式。(2) 宁愿使用
Instant
而不是
Timestamp
@chrylis小心光学-我认为JPA不支持
Instant
。@Turing85它由Hibernate支持,如果有人对JPA不够熟悉,没有给另一个提供程序添加标签,这是默认值。@chrylis cautiouslyoptimistic-SQL DB中的数据类型是datetime。请参阅此,了解带有Calendar2String类型的JPA自定义datetime,但您可以使用任何类型,如Calendar2Date等。谢谢您的建议,但是,使用@Temporal(TemporalType.TIMESTAMP)时它不起作用;我正在使用Java11和SpringBoot2.3,它支持吗?
@PostMapping("/record")
public String updateRecord(@RequestParam("createDatetime") LocalDateTime createDatetime) {
    ...
}