我正在使用Java中的Hibernate for 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
任何人都知道解决方案吗?谢谢你的帮助!
答案 0 :(得分:0)
在属性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);
}
}
}