gpt4 book ai didi

java - TemporalType.TIMESTAMP 精度的 Hibernate 注解

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:50 28 4
gpt4 key购买 nike

我正在使用 Hibernate 在 Java 中为 MySQL 数据库创建一个表。

其中一列是日期类型。

@Temporal( TemporalType.TIMESTAMP )
@Column( name = "event_start_time", nullable = false, length = 19 )
public Date getEventStartTime()
{
return eventStartTime;
}

我知道可以使用 MySQL 指定 TIMESAMP 的精度

TIMESTAMP(6)

但是,在 Hibernate 注释映射中如何做到这一点?我试过了

length = 19, precision = 38, scale = 20

似乎没有一个以毫秒为单位存储时间,也就是过了第二秒

1374839856000

相对于

1374839855789

有人知道解决这个问题的方法吗?感谢您的帮助!

最佳答案

将您在属性 hibernate.dialect 中配置的类子类化,然后在那里更改使用的数据类型。将属性 hibernate.dialect 设置为您的新类。

这对我有用(自 MySQL 5.6.4 起):

public class MySQL564InnoDBDialect extends MySQL5InnoDBDialect {

protected void registerColumnType(int code, String name) {
if (code == Types.TIMESTAMP) {
super.registerColumnType(code, "TIMESTAMP(6)");
} else {
super.registerColumnType(code, name);
}
}
}

关于java - TemporalType.TIMESTAMP 精度的 Hibernate 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17873362/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com