Hibernate MSSQL datetime2 mappage

J'ai une procédure stockée qui returnne une colonne ayant le type de données comme datetime2 dans la database et Date dans le file Java. Quand j'essaye d'appeler getTime () sur cette heure obtenue de la database. Il renvoie 19994321211 millisecond qui est équivalent à Mon May 04 00:00:00 IST 2015. idéalement, il devrait returnner millisecondes de 2015-05-04 15:21:52 car c'est l'heure indiquée dans la database lorsque la procédure est exécutée directement.

Comme je suis nouveau à Hibernate, je suis incapable de comprendre si le problème est lié à la mise en correspondance d'hibernation ou à quelque chose d'autre qui me manque.

<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 } 

Essayez d'save un nouveau pilote comme ceci:

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

puis utilisez ce dialecte à la place:

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

Essayez aussi de changer cela:

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

pour ça:

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

Si vous utilisez des entités, vous pouvez spécifier le type de colonne en tant que tel:

 @Column(columnDefinition="datetime2") private Date completionTime; 
 I am able to solve above scenario by changing datatype as below,driver registrayion is not required: <hibernate-mapping> <sql-query name="getMLC"> <return-scalar column="mlcid" type="int" /> <return-scalar column="completionTime" type="timestamp" /> { call lsc.MLC_Get(:ABC, :XYZ, :ErrorCode)} </sql-query> </hibernate-mapping> class Mlc implements java.io.Serializable { private Integer mlcid; private TimeStamp completionTime; // getter and setter }