一尘不染

Hibernate MSSQL datetime2映射

hibernate

我有一个存储过程,该过程返回数据库中数据类型为datetime2以及Java文件中Date为数据的列。当我尝试在从数据库获取的时间上调用getTime()时。它返回的19994321211毫秒等于IST
2015年5月4日星期一。理想情况下,它应该返回2015-05-04 15:21:52的毫秒,因为这是直接执行过程时数据库中显示的时间。

由于我是Hibernate的新手,所以我无法理解问题是否与hibernate映射有关,或者我是否错过了其他事情。

<hibernate-mapping>
   <sql-query name="getMLC">
            <return-scalar column="mlcid" type="int" />
            <return-scalar column="completionTime" type="date" />
            { call lsc.MLC_Get(:ABC, :XYZ, :ErrorCode)}
    </sql-query>
</hibernate-mapping>

class Mlc implements java.io.Serializable {

    private Integer mlcid;
    private Date completionTime;
    // getter and setter
}

阅读 198

收藏
2020-06-20

共1个答案

一尘不染

尝试像这样注册一个新的驱动程序:

public class DateTime2SQLServerDialect extends SQLServer2008Dialect {

   public DateTime2SQLServerDialect () {
      super();
      registerColumnType(Types.DATE, "datetime2");
   }
}

然后改用以下方言:

<property name="hibernate.dialect">my.package.DateTime2SQLServerDialect</property>

也尝试更改此:

<return-scalar column="completionTime" type="date" />

对此:

<return-scalar column="completionTime" type="timestamp" />
2020-06-20