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
vsTIMESTAMP
不匹配引起的,但是为什么会发生这种不匹配呢
顺便说一句,我不是自己创建表的,Spring是这样做的。我应该在Java代码中做些什么更改,以便在不进行时区转换的情况下节省时间?您遇到了什么问题?@Rono数据库中的startsAt与正确时间的差异在于时区的值。当从数据库中提取数据时,数据与存储的数据不同?@Rono当提取数据时,时间是正确的。但是我需要它在数据库中也是正确的。在您的数据库中正确存储了datetime(正如您使用的datetime类型)。我认为你不应该为此担心。