Java 使用datetime而不是datetime2 sqlserver hibernate
我已将hibernate配置为自动更新。我有一个mssql服务器2012。Hibernate在数据库中将我的java.util.Date对象创建为datetime2。是否有可能强制hibernate在数据库中创建datetimeJava 使用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,这样每个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数据库,这正是我需要的!