2

JavaでHibernate for MySQLデータベースを使用してテーブルを作成しています。

列の 1 つは日付型です。

@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

どれも、2番目の別名を過ぎたミリ秒単位で時間を保存しているようには見えません

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 に答える