使用datetime而不是datetime2 sqlserver hibernate

时间:2015-03-20 10:05:08

标签: java sql-server hibernate datetime datetime2

我将hibernate配置为自动更新。我有一个mssql-server 2012.Hibernate在数据库中创建我的java.util.Date对象作为datetime2。是否有可能强制hibernate在数据库中创建日期时间?

我知道我可以在对象的字段上使用注释,但是有太多注释。所以我想配置hibernate,以便每个java.util.Date在数据库中自动成为日期时间。

1 个答案:

答案 0 :(得分:1)

我想到的第一件事是定义一个新的Hibernate Dialect,它将Java数据类型映射到datetime,而不是默认的datetime2

一个完整的类示例:

public class ModifiedSQLServerDialect extends SQLServer2008Dialect {
    public ModifiedSQLServerDialect () {
        super();
        registerColumnType( Types.TIMESTAMP, "datetime" );
    }
}

如果您查看SQLServer2008Dialect的来源(假设是Hibernate 4.3),您可能会发现Types.TIMESTAMP已映射到"datetime2",我们正在有效地重新定义它,在我们自己的{ {1}}。

使用新方言

要使用我们刚刚定义的新方言,您需要将以下属性添加到ModifiedSQLServerDialect文件中:

persistence.xml