我有一个存储过程,该过程返回数据库中数据类型为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 }
尝试像这样注册一个新的驱动程序:
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" />