Java SpringDataJPA创建DATETIME列,但插入时间戳

Java SpringDataJPA创建DATETIME列,但插入时间戳,java,sql,spring-data-jpa,Java,Sql,Spring Data Jpa,我有一个实体类: // Meeting.java @Entity public class Meeting { @GeneratedValue(strategy = GenerationType.IDENTITY) @Id private Long id; @Column(nullable = false) LocalDateTime startsAt; ... } // application.properties: spring.j

我有一个实体类:

// Meeting.java
@Entity
public class Meeting {
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Id
    private Long id;
    
    @Column(nullable = false)
    LocalDateTime startsAt;
    ...
}

// application.properties:
spring.jpa.hibernate.ddl-auto = create

// console logs:
create table meeting (... , starts_at datetime(6) not null, ...)
...
insert into meeting (..., starts_at, ...) values(?,...)
binding parameter [2] as [TIMESTAMP] - [2020-09-05T20:37:33.226]
因此,我们:

  • 数据库列的类型为
    datetime
  • 绑定参数的类型是
    TIMESTAMP
我想这是不正确的

当我保存时间
2020-09-05T20:37:33.226
时,这会导致保存
2020-09-05T16:37:33.226
(即
t时区
而不是
t
)。从数据库中取回时,时间是正确的(
2020-09-05T20:37:33.226
)。但我也需要它在数据库中是正确的

当我使用SQL查询(在mySQL控制台中手动写入
insert
select
quesries)时,
2020-09-05T20:37:33.226
会按原样保存

为什么使用Spring数据JPA时会出现子构造时区?我想这是由前面提到的
datetime
vs
TIMESTAMP
不匹配引起的,但是为什么会发生这种不匹配呢


顺便说一句,我不是自己创建表的,Spring是这样做的。我应该在Java代码中做些什么更改,以便在不进行时区转换的情况下节省时间?

您遇到了什么问题?@Rono数据库中的startsAt与正确时间的差异在于时区的值。当从数据库中提取数据时,数据与存储的数据不同?@Rono当提取数据时,时间是正确的。但是我需要它在数据库中也是正确的。在您的数据库中正确存储了datetime(正如您使用的datetime类型)。我认为你不应该为此担心。