1

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

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

4

1 回答 1

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",我们正在有效地重新定义它,在我们自己的ModifiedSQLServerDialect.

使用新方言

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

<property name="hibernate.dialect" value="com.example.ModifiedSQLServerDialect" /> 
于 2015-03-20T10:11:10.407 回答