【问题标题】:Error org.hibernate.MappingException: No Dialect mapping for JDBC type: -1错误 org.hibernate.MappingException:没有 JDBC 类型的方言映射:-1
【发布时间】: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


【解决方案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/)

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 2012-02-09
    • 2018-04-08
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多