【发布时间】:2014-07-20 03:52:39
【问题描述】:
我在我的一个开发环境中遇到了一个奇怪的问题。安装了一个新的 mysql 5.5 服务器,在运行我的 spring/hibernate 应用程序时,我遇到了这个错误。
Caused by: org.hibernate.MappingException: No Dialect mapping for JDBC type: -1
at org.hibernate.dialect.TypeNames.get(TypeNames.java:79) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.dialect.TypeNames.get(TypeNames.java:104) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.dialect.Dialect.getHibernateTypeName(Dialect.java:393) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.custom.CustomLoader$Metadata.getHibernateType(CustomLoader.java:582) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.performDiscovery(CustomLoader.java:508) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.custom.CustomLoader.autoDiscoverTypes(CustomLoader.java:524) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.Loader.getResultSet(Loader.java:1817) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.Loader.doQuery(Loader.java:697) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.Loader.doList(Loader.java:2228) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.Loader.list(Loader.java:2120) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:312) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1722) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:175) ~[hibernate-core-3.3.0.SP1.jar:3.3.0.SP1]
at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:67) ~[hibernate-entitymanager-3.4.0.GA.jar:3.4.0.GA]
... 79 common frames omitted
这是失败的查询:
select count(e.event), GROUP_CONCAT(DISTINCT e.event), GROUP_CONCAT(DISTINCT e.eventid) , GROUP_CONCAT(DISTINCT e.ttid), e.mmth, e.absq, e.year, e.mfnmm, e.retls, GROUP_CONCAT(DISTINCT e.bbn), e.bplk, GROUP_CONCAT(DISTINCT e.ppd), e.sgm, e.sz, e.fm, e.ppk, e.pkg, e.mch, e.md, e.sw,e.ew,ROUND(sum(e.vol),2),ROUND(sum(e.is),2),ROUND(sum(e.iv),2),ROUND(sum(e.pbv),2),ROUND(sum(e.pbvo),2),ROUND(sum(e.upbva),2), ROUND(sum(e.unpbvo),2),ROUND(sum(e.cv),2), ROUND(sum(e.cva),2), ROUND(sum(e.chv),2), ROUND(sum(e.chl),2) from s_test_mt e where e.event is not null and e.event <> '' and e.mfnmm in ('Kern') group by e.mfnmm, e.retls, e.mch, e.ppk, e.fm, e.sw, e.ew order by e.ttid asc
我在spring中使用如下配置:
<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>
该异常仅在使用休眠运行本机查询时发生。它也可以在不同的开发环境和生产环境中正常运行(典型的嗯!)。会不会是模式/表的字符集等引起的?
我正在使用hibernate 3.3和spring 3,并使用entitymanager访问mysql innodb 5.5.37版
任何关于从哪里开始寻找的指针将不胜感激。
【问题讨论】:
-
我现在通过将休眠升级到 3.5.5-Final 设法解决了这个问题。还没找到根本原因
标签: mysql hibernate spring-mvc spring-jdbc