Java TemporalType.TIMESTAMP精度的Hibernate注释
我正在用Java中的Hibernate for MySQL数据库创建一个表 其中一列为日期类型Java TemporalType.TIMESTAMP精度的Hibernate注释,java,mysql,database,hibernate,hibernate-annotations,Java,Mysql,Database,Hibernate,Hibernate Annotations,我正在用Java中的Hibernate for MySQL数据库创建一个表 其中一列为日期类型 @Temporal( TemporalType.TIMESTAMP ) @Column( name = "event_start_time", nullable = false, length = 19 ) public Date getEventStartTime() { return eventStartTime; } 我知道可以使用 TIMESTAMP(6) 但是,在Hibernat
@Temporal( TemporalType.TIMESTAMP )
@Column( name = "event_start_time", nullable = false, length = 19 )
public Date getEventStartTime()
{
return eventStartTime;
}
我知道可以使用
TIMESTAMP(6)
但是,在Hibernate注释映射中如何做到这一点?我试过了
length = 19, precision = 38, scale = 20
所有这些似乎都无法以毫秒为单位存储秒后的时间
1374839856000
相对于
1374839855789
有人知道这个问题的解决办法吗?谢谢你的帮助 对在属性hibernate.dialogue中配置的类进行子类化,然后在那里更改使用的数据类型。将hibernate.dialogue属性设置为新类 这就是我的工作原理(从MySQL 5.6.4开始):
我认为您必须将列类型更改为datetime。我不相信有临时类型。datetime,Hibernate中只有日期或时间。这里有点混乱,
1374839856000
需要您,但您得到了1374839855789
。对吗?或者别的什么…不,我的意思是我想要1374839855789,但我想要的是1374839856000,真的没有其他解决方案吗?这看起来更像是一种解决办法。为什么这么难?在我看来,时间戳的精确性似乎是一种常见的设置
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);
}
}
}