Java 使用datetime而不是datetime2 sqlserver hibernate

Java 使用datetime而不是datetime2 sqlserver hibernate,java,sql-server,hibernate,datetime,datetime2,Java,Sql Server,Hibernate,Datetime,Datetime2,我已将hibernate配置为自动更新。我有一个mssql服务器2012。Hibernate在数据库中将我的java.util.Date对象创建为datetime2。是否有可能强制hibernate在数据库中创建datetime 我知道我可以在对象中的字段上使用注释,但是注释太多了。所以我想配置hibernate,这样每个java.util.Date都会自动成为数据库中的datetime。我想到的第一件事是定义一个新的hibernate方言,它将java数据类型映射到datetime,而不是默认

我已将hibernate配置为自动更新。我有一个mssql服务器2012。Hibernate在数据库中将我的java.util.Date对象创建为datetime2。是否有可能强制hibernate在数据库中创建datetime


我知道我可以在对象中的字段上使用注释,但是注释太多了。所以我想配置hibernate,这样每个java.util.Date都会自动成为数据库中的datetime。

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

完整的课堂示例:

public class ModifiedSQLServerDialect extends SQLServer2008Dialect {
    public ModifiedSQLServerDialect () {
        super();
        registerColumnType( Types.TIMESTAMP, "datetime" );
    }
}
如果您查看
SQLServer2008方言的源代码(假设Hibernate 4.3),您可能会看到
类型.TIMESTAMP
映射到
“datetime2”
,我们正在用自己的
修改后的SQLServerdial
重新定义它

使用新方言

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

<property name="hibernate.dialect" value="com.example.ModifiedSQLServerDialect" /> 


为什么需要datetime?其他程序也使用数据库,无法处理DateTime2数据库,这正是我需要的!