错误org.hibernate.MappingException:没有JDBC类型的Dialect映射:-1

时间:2014-05-30 11:38:49

标签: mysql hibernate spring-mvc spring-jdbc

我在一个开发环境中遇到了一个奇怪的问题。安装了一个新的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

我在春天使用以下配置:

<prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop>

仅在使用hibernate运行本机查询时才会发生异常。它也适用于不同的开发环境和生产(典型的呃!)。它可能是由架构/表格等字符集引起的吗?

我正在使用hibernate 3.3和spring 3,并使用entitymanager访问mysql innodb版本5.5.37

任何关于从哪里开始寻找的指示都将不胜感激。

1 个答案:

答案 0 :(得分:1)

当我没有按照以下方式向SQLQuery提供实体类型时,我遇到了这个问题:

 Query query = session.createSQLQuery(
"select * from stock s where s.activeStock = true")
.addEntity(Stock.class);
List result = query.list();

感谢mkyong(http://www.mkyong.com/hibernate/hibernate-native-sql-queries-examples/