首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

org.hibernate.MappingException: No Dialect 地图ping for JDBC type: -16

2012-10-06 
org.hibernate.MappingException: No Dialect mapping for JDBC type: -16?Java代码:?public ListObject[

org.hibernate.MappingException: No Dialect mapping for JDBC type: -16

?Java代码:

?

public List<Object[]> getPlateNumberAndDate(){       return getHibernateTemplate().executeFind(new HibernateCallback(){           public Object doInHibernate(Session session)                   throws HibernateException, SQLException {               Query q = session.createSQLQuery("SELECT top 5 VEHICLE_NUM, ALARM_DATE FROM [dbo].[ALARM_PROCESS] WHERE CHULI_TAG IS NULL");            return q.list();           }                  });   }

?

异常:

?

Exception in thread "main" org.springframework.orm.hibernate3.HibernateSystemException: No Dialect mapping for JDBC type: -16; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: -16at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:676)at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:424)at org.springframework.orm.hibernate3.HibernateTemplate.executeFind(HibernateTemplate.java:343)at alpha.gpsf.dao.impl.SpeedingQueryDAOImpl.getPlateNumberAndDate(SpeedingQueryDAOImpl.java:43)at alpha.gpsf.dao.impl.SpeedingQueryDAOImpl.main(SpeedingQueryDAOImpl.java:106)Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: -16at org.hibernate.dialect.TypeNames.get(TypeNames.java:79)at org.hibernate.dialect.TypeNames.get(TypeNames.java:104)at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:393)at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:582)at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:508)at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:524)at org.hibernate.loader.Loader.getResultSet(Loader.java:1817)at org.hibernate.loader.Loader.doQuery(Loader.java:697)at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)at org.hibernate.loader.Loader.doList(Loader.java:2228)at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)at org.hibernate.loader.Loader.list(Loader.java:2120)at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312)at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1722)at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175)at alpha.gpsf.dao.impl.SpeedingQueryDAOImpl$2.doInHibernate(SpeedingQueryDAOImpl.java:48)at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:419)... 3 more

?

关键异常:

?

org.hibernate.MappingException: No Dialect mapping for JDBC type: -16

?

原因:hibernate中native sql对于数据库的某些数据类型不支持,数据类型不能成功映射。

?

解决办法:

?

在取数据的时候用下CONVERT函数,把类型转成varchar就行了,测试得知varchar类型没问题

?

Query q = session.createSQLQuery("SELECT top 5 CONVERT(varchar(25),VEHICLE_NUM), CONVERT(varchar(25),ALARM_DATE,20) FROM [dbo].[ALARM_PROCESS] WHERE CHULI_TAG IS NULL");

?

?

热点排行