2

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

其中一列是日期类型。

@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

有谁知道这个问题的解决方案?谢谢您的帮助!

4

1 回答 1

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);
        }
    }
}
于 2014-03-23T21:11:35.540 回答